طراحیشده برای محیطهای توزیعشده: جهشهای صورت گرفته در توسعه معماری کامپیوتر، پردازشهای توزیعشده و موازی(distributed and parallel processing)، محاسبات ابری(cloud computing) و همچنین نیاز به تکرار(replicate) و توزیع(distribute) دادهها میان سرویسدهندههای متعدد؛ نیاز به یک پایگاهداده باقابلیت وسعت پذیری افقی( scale horizontally : scale out) را بیشازپیش روشن میساخت. یعنی پایگاهی که به تواند بهسادگی و ارزانی با افزودن گرههای جدید به شبکهاش توسعه یابد برخلاف پایگاهدادههای رابطهای که تنها به وسعت پذیری عمودی(scale vertically : scale up) یعنی ارتقا کارایی یک تک گره با افزودن به منابع آن یا با فناوریهای مجازیسازی (virtualization technology)اهتمام میورزند.
• واسط سطح فراخوانی سادهتر : واسط سطح فراخوانی(CLI : call level interface) یک استاندارد نرمافزاری است که میگوید چه طور جستارها از سمت برنامه به سمت DBMS ارسال و چه طور مجموعهرکورد(record set) به برنامه مجدداً بهطور سازگاری برگرد. در برنامههای شیءگرا و پایگاهدادههای رابطهای لازم بود تا نگاشت شی رابطه (Object/Relational Mapping) صورت پذیرد.
• اهمیت کمتر به سازگاری دادهها: پایگاهدادههای NoSQL ای از مدل همروندی و تراکنشی ضعیفتری نسبت به ACID بهره میبرند. خصوصیت ACID به معنای اتمیک بودن(atomic)، سازگاری(consistency)، انزوا(isolation) و پایداری(durability) برای تراکنشهای پایگاهداده، همخوانی دادهها در بالاترین اولویت خود میدانست. پیادهسازی این خصوصیت برای پردازشهای موازی و پاسخگویی سریع به جستارها کار دشواری بود. پس برای پردازش حجم بالایی از داده در یک محیط توزیعشده ناچار به تعدیل خصوصیت ACID بودیم که در پایگاهدادههای NoSQL این امر صورت پذیرفته است.
• استفاده کاراتر از شاخصها و حافظه اصلی توزیعشده: با استفاده از ساختارهای درونحافظه ای(in-memory) میتوان حجم بالایی از دادهها را در حافظه اصلی نهان (cache) نمود و با سرعت بالاتری نسبت به دیسک آنها را واکشی(fetch) کرد.
• شمای منعطفتر : بی شمایی(schema-less) یا شمای ضعیف(weak schema) در انبار دادهها(data warehouse) یک پیشرفت در جستارهای تحلیلی حرفههای فاقد عمومیت(ad-hoc business analytics query) بهحساب میآمد که پایگاهدادههای NoSQL ای نیز بدان توجه وافری داشتهاند.
تقسیم بندی :
پایگاه های داده NoSQL را می توان بر اساس مدل داده (data model) به چهار دسته تقسیم می شوند:
• پایگاهداده جفت کلید مقدار (Key Value Pair) : ایده اصلی این مدل دههها است که در محاسبات وجود دارد، این یک ساختمان داده معمول است یا مفهومی است در توسعه file system ها به کار گرفتهشده است [1]. ساختار این مدل از مدل رابطه ای ساده تر و سرعت به جواب رسیدن جستارها نیز بسیار بالاتر است. این مدل برای تغییر(modify)دادن و جستار زدن بر روی کلیداصلی(primary key) حجم سنگینی از داده ها(mass storage) در همزمانی بالا(high concurrency) عملکرد عالی ای از خود نشان می دهد [33]. در این نوع از پایگاهدادهها، داده بهصورت جفتی از کلیدها و مقدارها ذخیره میگردد. هر یک از کلیدها در گردایه (collection) خود منحصربهفرد است. دسترسی به مقادیر بهوسیله تجمیع (association)کلید-مقدار به دست میآید. کلیدها نیازمند آن هستند که در مخزن دادهای که قابلدسترسی سریع باشند نگهداری گردند شبیه جدول درهم (hash table). نمونه ای از پیاده سازی ها :
Redis
Voldemort(LinkedIn)
Membase
Coherence(Oracle)
Velocity
BigTable(Google)
TokyoCabinet
• پایگاهدادههای گراف(graph database) : پایگاهدادههای گراف بر اساس نظریه گرافها ایجادشدهاند که شامل گره (node)، یال(edge) و خصوصیات (properties)هستند.بخشی از شهرت شبکههای اجتماعی به دلیل احیای تحقیقات پایگاهدادههای گرافی در دهههای 80 و 90 بوده است چراکه روابط دوستی و علاقهمندیهای افراد را میتوان بهصورت یک گراف متصور شد. نمونه ای از پیاده سازی ها :
Neo4j
InfoGrid
Sesame
BigData
FlockDB
GraphDB
AllegroGraph
DEX
Post #362
737
Forwarded from Deleted Account