مقایسه Blockchain و Relational database

من ارسلان میربزرگی، در این مقاله قصد دارم تا شما را با تفاوت Blockchain  و Relational database  آشنا کنم. ازآنجاکه اصطلاح “Blockchain” به‌وضوح معنا نشده است، بنابراین می‌توانید تقریباً هر پروژه‌ی IT را با استفاده از Blockchain توصیف کنید. Blockchain که از آن ارز دیجیتال Bitcoin استفاده می‌کنند، برای استفاده توسط گروه‌های Non-trusting طراحی‌شده است و نیازی به مدیریت مرکزی ندارد. اگر به روشی برای انتقال peer-to-peer نیاز داشته باشید که توسط یک یا چند دولت قابل Shut down نباشد، ممکن است این نوع طراحی مناسب باشد. اما برای پایگاه داده‌ای که از فرایندهای Critical کسب‌وکار پشتیبانی می‌کند کمتر منطقی و مناسب است.

ازآنجا که نیازمندی‌های مربوط به پایگاه داده‌ای که از عملکرد Bitcoin پشتیبانی می‌کند، احتمالاً با نیازمندی‌های پایگاه داده‌ای که از یک‌ روند تجاری معمول پشتیبانی می‌کند، بسیار متفاوت است. ممکن است راه‌حلی که برای Bitcoin مناسب است برای سایر موارد بهترین انتخاب نباشد. بنابراین سؤال اینجاست که در چه زمینه‌هایی استفاده از Bitcoin-like blockchain به‌وضوح بهتر از استفاده از یک پایگاه داده‌ی Relational است؟

Blockchain

 آیا کاهش واسطه برای Blockchain مهم است؟

هدف از Disintermediation یا واسطه زدایی برای اشخاص ثالث ممکن است هدف خوبی برای Cryptocurrency باشد. خصوصاً اگر نگران جلوگیری از تداخل آژانس‌های دولتی هستید. البته لزوماً هدف خوبی برای نرم‌افزارهای Enterprise نیست. هزینه‌های احتمالی Saving در استفاده از Blockchain از این واقعیت ناشی می‌شود که یک برنامه Blockchain در حال اجرا به پشتیبانی زیادی احتیاج ندارد زیرا برای فعال نگه داشتن پایگاه داده‌ی توزیع‌شده می‌توانید به‌جای سایر مدیران داخلی به سازمان‌های دیگر تکیه کنید.
اما اگر خودتان در حال ساخت یک برنامه مبتنی بر Blockchain هستید، احتمالاً نیاز است پشتیبانی و نگهداری آن را نیز ارائه دهید. تحقیقات نشان می‌دهد که هزینه‌ی پشتیبانی و نگهداری از نرم‌افزار حداقل به‌اندازه‌ی هزینه‌ی تولید آن است. این نشان می‌دهد که چرا فروشندگان نرم‌افزار برای پشتیبانی و نگهداری محصول هزینه‌ی زیادی می‌گیرند. به‌عنوان یک قانون باید در نظر داشته باشید که اگر برنامه‌ای نوشته‌اید که از Blockchain استفاده می‌کند، در طول چرخه‌ی حیات برنامه حداقل همان‌قدر که در طول توسعه‌ی آن هزینه کرده‌اید، پرداخت خواهید کرد.
 با توجه به این دیدگاه، هزینه‌های استفاده از مدیران داخلی پایگاه داده چندان بد نیست. حذف واسطه که استفاده از Blockchain به همراه دارد ممکن است در طولانی‌مدت صرفه‌جویی قابل‌توجهی در هزینه‌ها ایجاد کند. البته این به این معنی نیست که همیشه سود حاصل از حذف واسط مزایای قابل‌توجهی داشته باشد.

 

  Performance penalty

درحالی‌که سایر ویژگی‌ها، مانند توانایی گرفتن Double-spending و توانایی مقاومت در برابر مخربان، از Performance برای Cryptocurrency مهم‌تر هستند، Performance بسیار بالا اغلب هدف پایگاه‌ داده‌هایی است که از فرایندهای مهم و حیاتی تجاری پشتیبانی می‌کنند. متأسفانه، ویژگی‌هایی که از Bitcoin-like blockchain استفاده می‌کنند، Performance را نیز به میزان قابل‌توجهی پایین می‌آورند. مخصوصاً، درحالی‌که سرعت نوشتن در یک پایگاه داده‌ی Relational (RDBMS)  بسیار زیاد است، نوشتن در Bitcoin’s blockchain به منظور جلوگیری از حملات Sybil، سخت در نظر گرفته‌شده است و درنتیجه، نسبتاً کند است. Blockchain نیاز به استفاده از منابع زیادی دارد که برای این کار باید پول پرداخت کنید.
Bitcoin miner، افرادی که به‌روزرسانی‌های مربوط به Bitcoin’s blockchain را می‌نویسند. این افراد در حال حاضر برای هر به‌روزرسانی، بیش از 7000 دلار (در Bitcoin) دریافت می‌کنند. بدون این انگیزه، تقریباً به‌طورقطع هیچ به‌روزرسانی انجام نمی‌شد. همچنین برای سایر رویکردهای واسطه‌گری، performance penalty هایی در نظر گرفته‌شده است که هیچ‌یک به‌اندازه‌ی رویکردی که توسط Bitcoin پیروی می‌شود، سنگین و پرهزینه نیستند. اما همه‌ی آن‌ها نوعی Performance penalty را شامل می‌شوند.

 

  نکته مهم: اگر شما برای برنامه‌ی خود عملکرد بالایی نیاز دارید، یک پایگاه داده یRelational (RDBMS)  ممکن است نسبت به Blockchain گزینه‌ی بهتری باشد. در حقیقت، در حالت واقع‌گرایانه گفتن این‌که در چه مواردی استفاده از سیستمی که از Blockchain استفاده می‌کند نسبت به یک سیستم مبتنی بر پایگاه داده‌ی Relational (RDBMS) عملکرد بهتری دارد، دشوار است. همچنین یک Bitcoin-like blockchain، ممکن است مانع مهمی در مقیاس‌گذاری عملکرد برنامه شما باشد.

ضریب Fault-tolerance

شبکه Bitcoin کاربران زیادی دارد که هر یک از آن‌ها تعدادی از پردازش‌های موردنیاز برای Transaction های Bitcoin را انجام می‌دهند. یک نتیجه‌ی مفید این سطح عظیم از افزونگی، سطح بالای Fault-tolerance در Bitcoin است. موقعیتی که در آن حمله‌های هکرها به‌اندازه‌ی کافی بتواند شبکه‌ی Bitcoin را ناتوان کند تا از پردازش Transaction ها جلوگیری کند، بسیار نادر است.
 دستیابی به سطح یکسانی از Robustness در یک پایگاه داده‌یRelational (RDBMS)  یا انجام آن با هزینه‌ی مناسب بسیار دشوار است. مقاوم‌ترین پیاده‌سازی از یک پایگاه داده‌یRelational (RDBMS)  به همان سطح از Robustness در یک شبکه‌ی بزرگ و موازی Bitcoin دست خواهد یافت. اگر توانایی مقاومت در برابر هر نوع حمله‌ای برای شما مهم است، Bitcoin-like blockchain را انتخاب کنید. این ابزار به شما سطحی از Fault-tolerance را می‌دهد که دستیابی به آن با استفاده از روش‌های دیگر دشوار است.

    امنیت داده‌ها

یک Bitcoin-like blockchain توسط همه کاملاً قابل مشاهده است. به این معنی که محرمانه بودن هر داده ی ذخیره شده در آن اساساً صفر است. با این وجود، در دنیای تجارت دلایل خوبی برای علنی نکردن داده‌ها وجود دارد. داده‌های مرتب‌شده قطعاً نمی‌توانند عمومی باشند. بسیاری از مشاغل نمی‌خواهند داده‌هایی مثل Transaction های که در آن شرکت دارند، را افشا کنند. بنابراین، به نظر می‌رسد که یک Bitcoin-like blockchain عمومی برای استفاده در بسیاری از برنامه‌های تجاری خیلی قابل استفاده نیست. اما نیازی نبوده تمامی رکوردهای یک Transaction در Blockchain ذخیره شود. به‌جای این کار می‌توانید فقط یک Cryptographic hash از آن‌ها را ذخیره کنید که همین برای حل مشکلات پیش آمده کافی باشد. به دست آوردن یک سطح منطقی از محرمانه بودن داده‌ها با Blockchain امکان‌پذیر است.
Bitcoin’s blockchain به‌طور Cryptographical هر بلوکی را که به آن اضافه شده است پیوند می‌دهد. بنابراین تغییر در هر یک از بلوک‌ها به‌راحتی قابل‌دسترسی است. با توجه به اینکه Blockchain هر Transaction مربوط به Bitcoin را ثبت می‌کند، برای یک پایگاه داده‌یRelational (RDBMS)  ثبت هر دستور SQL که از Client دریافت می‌کند آسان است. امضای دیجیتالی داده‌های نوشته‌شده در یک پایگاه داده‌یRelational (RDBMS)  کار آسانی است. بنابراین می‌توان به‌راحتی به‌صورت Cryptographical تضمین کرد که داده‌های نوشته‌شده در آن پایگاه داده تغییر نکرده است. بنابراین در رابطه با پشتیبانی از Integrity داده‌ها بین پایگاه داده‌های Blockchain یاRelational (RDBMS)  تفاوتی وجود ندارد.

 Blockchain در مقابل پایگاه داده‌ی رابطه‌ای

Blockchain و پایگاه داده‌های Relational (RDBMS)  هر دو ابزار مفیدی برای ذخیره‌ی اطلاعات هستند. این ابزار از فرایندهای حیاتی کسب‌وکار پشتیبانی می‌کنند. همچنین هر یک در زمینه‌های مختلف نسبت به دیگری برتری دارد. مزیت Blockchain ها ارائه‌ی یک روش Robust و Fault-tolerant برای ذخیره‌ی داده‌های مهم است و پایگاه داده‌های Relational (RDBMS)  ازنظر Performance برتری دارند. بعید به نظر می‌رسد که پایگاه داده‌های Relational (RDBMS)  هرگز بتوانند سطحی از Robustness که Blockchain های کاملاً موازی ارائه می‌دهند را پشتیبانی کنند. همچنین Blockchain ها نیز نمی‌توانند همان سطح از Performance پایگاه داده‌های Relationalرا فراهم کنند. در زمینه‌های دیگر، هیچ‌یک از این دو پایگاه داده مزیت مشخصی ندارند. به‌عنوان مثال، مشخص نیست که سود حاصل از رفع واسطه‌گری که غالباً از آن به‌عنوان مزیت اصلی تکنولوژی Blockchain یاد شده، حتما محقق شود. در حالی که هزینه‌های پشتیبانی و نگهداری یک برنامه مبتنی بر Blockchain در نظر گرفته می شود.
اما Smart contract ها در دنیای پایگاه داده‌های Relational (RDBMS)  نیز وجود دارد که به‌عنوان روش‌های ذخیره شناخته می‌شوند. هر چیزی که با یک تکنولوژی قابل دستیابی است می‌تواند با تکنولوژی دیگر نیز محقق شود، بنابراین باید بررسی شود که استفاده از یکی از تکنولوژی ها برای کار شما مناسب است یا خیر.

و در آخر

سؤال اینجاست که چگونه باید بین Blockchain و پایگاه داده‌ی Relational (RDBMS)  یکی را انتخاب کنید؟ هنگام بررسی اینکه برای پشتیبانی از برنامه‌های بعدی خود بهتر است از کدام تکنولوژی استفاده کنید، حتماً نیازهای خود و چگونگی تأمین یا عدم تأمین آن‌ها توسط هر نوع پایگاه داده را دقیقا تجزیه‌وتحلیل کنید. اجازه ندهید که استدلال طرفداران هیچ‌یک از این تکنولوژی ها شما را قانع کند که روش آن‌ها بهتر است. طبق تجزیه‌وتحلیل دقیق نیازهای خود تصمیم‌گیری کنید.

ارسال دیدگاه

5 + = 12

این جا قراره با هم زبان برنامه نویسی جاوا رو یاد بگیریم. اگه جواب سوالتو توی مقاله ها پیدا نکردی، میتونی بهم ایمیل بزنی تا راهنماییت کنم. اگر موضوعاتی رو پیشنهاد داری حتما برام بفرست. منتظر ایمیلتم

پیام با موفقیت ثبت شد.
خطایی رخ داده است.