در مطلب Apache Ignite چیست تا اندازه ای در مورد apache ignite صحبت کردیم و گفتیم که یک پایگاه داده توزیع شده درون حافظه است که از حافظه اصلی برای ذخیره سازی و پردازش داده ها استفاده می شود. در منابع مرتبط با apache ignite از آن به عنوان پایگاه داده ای صحبت می شود که برای hybrid transactional analytical processing (مخفف شده htap) استفاده می شود.

htap از پردازش درون حافظه (in-memory computing) و یا همان سیستم حافظه توزیع شده (distributed memory system) استفاده می کند تا سیستم های oltp (یا online transactional processing) و olap (یا online analytical processing) را درون یک پلتفرم انجام دهند. در مطالب بعدی در مورد htap کمی صحبت می کنیم.

اما در ادامه همین مطلب تمامی ویژگی های apache ignite را توضیح می دهیم. مطابق شکل زیر (۱) می توانید ببینید که کاربردهای مختلف مانند اینترنت اشیا (internet of things)، حوزه سلامت (healthcare) و حتی فروشگاه های اینترنتی می توانند از apache ignite و معماری آن بهره ببرند.

ویژگی Ignite Native Persistence و حافظه پایدار Durable Memory

apache igniter یک پایگاه داده توزیع شده درون حافظه است که عملکرد آن متمرکز بر روی خافظه اصلی است ولی این به این معنی نیست که فقط برای پردازش از حافظه اصلی استفاده می شود، بلکه برای ذخیره سازی نیز استفاده خواهد شد. اگر ویژگی ignite native persistence فعال نشده باشد، پس apache igniter به عنوان in-memory database یا in-memory data grid استفاده می شود.

ولی اگر ignite native persistence فعال شده باشد، این تضمین داده می شود که حتی در صورت بروز مشکل در کلاستر سازگاری پایگاه داده حفظ می شود زیرا داده در دیسک یا یک پایگاه داده rdbms یا nosql ذخیره می شوند.

ویژگی ignite native persistence این اجازه را می دهد تا کاربران بتوانند داده های بیشتری را بر روی دیسک ذخیره و پردازش کنند. زیرا قاعدتا فضای دیسک ها بیشتر از حافظه اصلی است و همچنین ماندگاری داده ها تضمین می شود. طبق خاصیت نامانا بودن حافظه اصلی، هرگاه کلاستر خاموش شود، داده های ذخیره شده درون حافظه اصلی آن از بین خواهند رفت.

ویژگی ignite native persistence اجازه می دهد تا بتوانیم داده های درون یک کلاستر را بازیابی (recovery) کامل کنیم به این صورت که داده های درون حافظه بر روی دیسک ذخیره می شوند و در صورتی که کلاستر به هر دلیلی خراب شود، می توانیم پس از راه اندازی مجدد آن، داده های از دست رفته را از روی دیسک بازیابی کنیم.

پشتیبانی از SQL

apache ignite از زبان sql استاندارد (ansi 99) برای دسترسی به داده های توزیع شده پشتیبانی می کند. همچنین api ها برای زبان های سی پلاس پلاس، جاوا و سی شارپ فراهم شده اند. به طور مثال توسط زبان جاوا و jdbc می توانید کوئری ها را اجرا کنید و یا می توانید به صورت مستقیم به کنسول apache ignite وارد شده و سپس دستورهای sql را اجرا کنید. apache ignite از دستورهای sql و dml (یا data manipulate language) پشتبانی کامل می کند. این دستورها شامل موارد زیر هستند :

  • دریافت داده ها با دستور select
  • بروز رسانی داده ها با دستور update
  • درج داده ها با دستور insert
  • حذف داده ها با دستور delete
  • دادغام داده ها با ستور merge
  • تمامی join ها به صورت توزیع شده

همچنین sql پشتیبانی شده در apache ignite از دستورهای create و alter برای ایجاد و تغییر جدول ها و ایندکس ها نیز پشتیبانی می کند. شکل زیر (۲) مثالی از ایجاد یک جدول به نام User را نشان می دهد.

نکته مهمی که باید به آن دقت کنید اینکه تراکنش های apache ignite باید بر روی چندین سرور (server) توزیع شوند زیرا ماهیت apache ignite سیستمی توزیع شده است. در یک سیستم پایگاه داده توزیع شده، ممکن است به دلیل پارتیشن بندی داده ها هر گره تنها بخشی از داده ها را در اختیار داشته باشد، پس در کوئری مانند join، بخشی از داده ها از یک سرور و بخش دیگر از سرور دیگر باید واکشی شود.

پشتیبانی از ACID

acid اشاره به چهار قاعده ای دارد که درون پایگاه داده های رابطه برای تضمین سازگاری (consistently) پایگاه داده استفاده می شود.apache ignite از چهار قاعده acid برای داده های درون حافظه و هم برای داده های درون دیسک پشتیبانی می کند تا این تضمین را بدهد که سازگاری داده ها کاملا حفظ می شود.

در پایگاه داده های توزیع شده پیاده سازی چهار قاعده acid با سیستم پایگاه داده متمرکز متفاوت است. در سیستم متمرکز، تمامی داده ها درون یک سرور قرار دارند  ولی در توزیع شدگی به دلیل پخش بودن داده ها، سیستم باید اطمنیان پیدا کند که عملیات بر روی تک تک سرورها انجام شده است تا بتواند نتیجه نهایی را برگشت دهد.

ذخیره سازی  Key-Value

 

یک distributed data store کامپیوتری از شبکه ها است که داده ها ر معمولا به صورت تکثیر (replicated) شده بر روی بیش از یک گره ذخیره می کند. واژه distributed data store را معمولا برای اشاره به واژه distributed database اشاره می شود. امروزه پایگاه داده های توزیع شده ارائه شده اند که از مدل key-value استفاده می کند.

key-value اشاره سیستم ذخیره سازی دارد که داده ها را در فرم آرایه های انجمنی و یا در اصطلاح های دیگر به صورت دیکشنری ها ذخیره سازی و بازیابی می کنند. آرایه های انجمنی یا دیکشنری ها فرمی از ساختارهای داده هستند که اندیس آنها می تواند غیر عدد باشید. این مدل در پایگاه داده های nosql بسیار فراگیر است.

apache ignite از مدل ذخیره سازی key-value نیز پشتیبانی می کند. مزیت این مدل این است که به راحتی می توان کلاستر را تا ۱۰۰ سرور مقیاس داد. اگر ویژگی ignite native persistence فعال باشد، ذخیره سازی key-value را می توان بر روی دیسک نیز انجام داد.