Transcript پایگاه داده
WWW.pupuol.comپوپول مرجع دانشگاه ومدرسه
+
what is NO SQL and what is COUCH DBMS for ?
Slides from: shahab ghafari
پوپول مرجع دانشگاه ومدرسه
WWW.pupuol.com
+
با فراگیر شدن اینترنت در سالهای اخیر و افزایش کاربران ،
سیستمهای RDBMSجوابگوی نیازهای برنامهنویسان در حوزهی وب
نبودند زیرا نیاز به نگهداری دادهها با حجم باال و سرعت خواندن و
نوشتن باال از جمله نقاط ضعف سیستمهای RDBMSمیباشد ،
چرا که با افزایش شدید کاربران دادهها اصوال به صورت منطقی
ساختار یکدست خود را جهت نگهداری از دست میدهند و به این ترتیب
عملیات نرمال سازی منجر به ساخت جداول زیادی میشود که نتیجه
آن برای هر کوئری عملیات Joinهای متعدد میباشد که سرعت
خواندن و نوشتن را به خصوص برای برنامههای با گسترهی وب پایین
میآورد.
+
پایگاه داده NOSQLعبارت است از not only sql
نسل بعدی پایگاه داده RDBMSکه اصوال دارای چند ویژگی زیر می
باشد :
non-relationalداده ها در این سیستم به صورت رابطه ای
(جدولی)نمی باشد .
Distributedداده ها به صورت توضیع شده نگهداری می شوند.
open-source سیستم نرم افزاری متن باز می باشد .
horizontal scalableپایگاه داده مقیاس پذیر به صورت افقی.
+
همانگونه که گفته شد این نوع پایگاه داده به منظور رفع نیازهای
برنامههای با حجم ورود و خروج داده بسیار باال (برنامههای مدرن وب
فعلی) ایجاد شدند.
شروع کار پیادهسازی این سیستمها در اوایل سال ۲۰۰۹شکل گرفت و
با سرعت زیادی رشد کرد و همچنین ویژگیهای کلی دیگری نیز به این نوع
سیستم اضافه شد.
+
این ویژگی ها عبارتند از :
َ
Schema-free بدون شما ،با توجه به برنامههای وبی فعلی ممکن
است شمای نگهداری دادهها ( ساختار کلی ) مرتبا و یا گهگاهی تغییر
کند .لذا در این سیستمها اصوال دادهها بدون شمای اولیه طراحی و
ذخیره میشوند ( .به عنوان مثال میتوان در یک سیستم که
مشخصات کاربران وارد سیستم میشود برای یک کاربر یک سری
صرفنظر
اطالعات اضافی و برای کاربری دیگر از ورود اطالعات اضافی
کرد ،و در مقایسه با RDBMSبه این ترتیب از ورود مقادیر Null
و یا پیوندهای بیمورد جلوگیری کرد .کنترل اطالعات الزامی ت وسط
الیه سرویس برنامه انجام میشود ( .در زبان جاوا توسط jsr-303و
یا Bean Validationها)
+
easy replication supportدر این سیستم ،نحوهی گرفتن
نسخههای پشتیبان و syncبودن نسخههای مختلف بسیار ساده و
سر راست میباشد و سرور پایگاه داده به محض عدم توانایی خواندن
و یا نوشتن از روی دیسک سراغ نسخهی پشتیبان میرود و آن نسخه
را به عنوان نسخهی اصلی در نظر میگیرد.
Simple APIبه دلیل متنباز بودن و فعال بودن
Communityاین سیستمها APIهای ساده و بهینهای برای اکثر
زبانهای برنامهنویس محبوب ایجاد شده است که در ادامه به آن می
پردازیم .
+
eventually consistent در سیستمهای RDBMSکه دادهها
خاصیت ACIDرا ( در قالب Transactionپیاده میکنند ) ،در
این سیستمهای دادهها در وضعیت BASEقرار دارند که سرنام
کلمات Eventual ،Soft State ،Basically Available
Consistencyمیباشد.
huge amount of data این سیستمها به منظور کار با
اگر
دادههای با حجم باال ایجاد شدهاند ،یک تعریف کلی میگوید
مقدار دادههای نگهداری شده در پایگاههای داده برنامه شما ظرفیتی
کمتر از یک ترابایت داده دارد از پایگاه داده RDBMSاستفاده کنید
واگر ظرفیت آن از واحد ترابایت فراتر میرود از سیستمهای
NOSqlاستفاده کنید.
+
انواع NOSQL
در حالت کلی پایگاهای داده NoSQLبه ۴دسته تقسیم میشوند که
به ترتیب پیچیدگی ذخیرهسازی دادهها عبارتند از:
•
Key/Value Store Databases
•
Document Databases
•
Graph Databases
•
Wide column stores
Key/Value Store Databases
این سیستم سادهترین حالت از دستهبندیهای NoSQLمیباشد ،
به طور کلی جهت استفاده در سیستمهایی است که دادهها متمایز از
یکدیگر هستند و اصوال Availabilityو یا در دسترس بودن دادهها
نسبت به سایر موارد نظیر پایائی اهمیت باالتری دارد.
پایه بانک های اطالعاتی NOSQLرا تشکیل داده و اهداف عمومی
را دنبال می کنند .
از این نوع بانک های اطالعاتی ،در سکو های کاری ابری زیاد استفاده
میشود
+
از پیادهسازیهای این نوع پایگاه داده به موارد زیر میتوان اشاره کرد:
•
Amazon SimpleDB
•
Memcached
•
Oracle Key/value Pair
•
Redis
+
Document Databases
بجای جداول ،دارای بانکهای اطالعاتی مختلفی هستند و در اینجا
بجای ردیفها ،سند یا documentدارند .ساختار سندها نیز عموما
بر مبنای اشیاء JSONتعریف میگردد (که البته این مورد الزامی
نبوده و از هر محصول ،به محصول دیگری ممکن است متفاوت باشد؛
اما عمومیت دارد) .بنابراین هر سند دارای تعدادی خاصیت است
(چون اشیاء JSONبه این نحو تعریف میگردند) که دارای مقدار
هستند .در نگاه اول ،شاید این نوع اسناد ،بسیار شبیه به key-
value storesبه نظر برسند .اما در حین تعریف اشیاء ،JSONیک
مقدار میتواند خود یک ش یء کامل دیگر باشد و نه صرفا یک مقدار
ساده .به همین جهت عدهای به این نوع بانکهای اطالعاتی ،بانکهای
اطالعاتی Key-value storeسفارش ی و خاص نیز میگویند.
JSON=java script object notation
+
+
این نوع ساختار منعطف ،برای ذخیره سازی اطالعات اشیاء تو در تو و
درختی بسیار مناسب است .همچنین این اسناد میتوانند حاوی
پیوستهایی نیز باشد؛ مانند پیوست یک فایل به یک سند.
از این دست بانکهای اطالعاتی ،NoSQLمیتوان به
CouchDB
MongoDB
RavenDBاشاره کرد
سایر مزایای Document storesکه به پرکاربرد شدن آنها کمک
کردهاند به شرح زیر هستند:
هر سند را میتوان با یک URIآدرس دهی کرد. برای نمونه CouchDBاز یک full REST interfaceبرایدسترس ی و کار با اسناد پشتیبانی میکند (چیزی شبیه به ASP.NET
WEB APIدر دات نت) .در اینجا با استفاده از یک وب سرور توکار و
بکارگیری HTTP Verbsمانند Get ،Delete ،Putو غیره ،امکان
کار با اسناد وجود دارد.
اغلب بانکهای اطالعاتی Document storesاز JavaScriptبه عنوان native languageخود بهره میبرند (جهت سهولت کار با
اشیاء )JSON
+
+
در اینجا دو دیتابیس ،بجای دو جدول وجود دارند .همچنین در مقایسه
با بانکهای اطالعاتی ،key-valueبرای نمونه ،مقدار خاصیت
آدرس ،خود یک ش یء است که از دو خاصیت تشکیل شده است .به
عالوه هر خاصیت Most_Recentیک ،Orderبه سند دیگری در
بانک اطالعاتی Ordersلینک شده است.
+
Graph databases
Graph databasesنوع خاص ی از بانکهای اطالعاتی NoSQL
هستند که جهت ردیابی ارتباطات بین اطالعات طراحی شدهاند و برای
برنامههای شبکههای اجتماعی بسیار مفید هستند.
در واژه نامه این بانکهای اطالعاتی Nodesو ( Edgesاتصال
دهندههای نودها) تعریف شدهاند .در اینجا نودها میتوانند دارای
خاصیتها و مقادیر متناظر با آنها باشند.
یکی از معروفترین Graph databasesمورد استفادهNeo4j ،نام
دارد.
+
Wide column stores
Wide column storesدارای جداولی است که درون آنها
ستونهایی قابل تعریف است .درون این ستونها که یادآور بانکهای
اطالعاتی رابطهای هستند ،اطالعات به شکل key-valueبا
ساختاری متفاوت ،قابل ذخیره سازی هستند .در اینجا هر ستون،
میتواند شامل گروهی از ستونها که بر اساس مفاهیم جفتهای
key-valueکار میکنند ،باشد.
این نوع بانکهای اطالعاتی عموما در سایتهای اینترنتی بسیار بزرگ و
برنامههای « »Big dataاستفاده میشوند
+
+
BigTableگوگل که یک محصول اختصاص ی و غیرعمومی است؛ اما
جزئیات آن را به عنوان مقاالت علمی منتشر کرده است.
دنیای سورس باز به رهبری ،Yahooنمونه سورس باز BigTableرا
به نام Hbaseارائه داده است.
در فیس بوک ،از بانک اطالعاتی دیگری به نام Cassandraاستفاده
میکنند .در اینجا به گروهی از ستونها super columnsو جداول
super column familiesگفته میشود.
+
WWW.pupuol.comپوپول مرجع دانشگاه ومدرسه
WWW.pupuol.comپوپول مرجع دانشگاه ومدرسه