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پوپول مرجع دانشگاه ومدرسه