عنوان مقاله

بررسی پایگاه داده غیررابطه ای No SQL و معرفی مدل کاساندار

نوع فایل

تعداد صفحات

ورد – Word

۸۰ صفحه

پیش نمایش مقاله

 چکیده :پایگاه داده رابطه ای بطورگسترده دراغلب برنامه ها به منظورذخیره وبازیابی داده و اطلاعات مورداستفاده قرار می گیرد و این پایگاه داده ها خیلی خوب کارمی کنند وکارایی بالایی دارند درصورتی که مسئول رسیدگی به مجموعه محدودی ازداده ها باشند اما بررسی ها نشان داده است که دسترسی بلادرنگ به حجم عظیمی از    داده ها مانند اینترنت درپایگاه داده رابطه ای ناکارامد وکم بازده است، برای رفع این مشکل پایگاه داده nosql یا Not Only SQL  به معنی نه تنها اس کیوال به وجود امد. این پروژه به بررسی و شناخت این نوع پایگاه داده و مشکلات پایگاه داده های رابطه ای، معرفی پایگاه داده NOSQL و اشنایی با ساختارآن می پردازد همچنین در این پروژه انواع پایگاه داده های NOSQL مزایا و معایب متفاوت آن باپایگاه داده رابطه ای و تکنیکهای مختلف استفاده شده درآن مورد بررسی قرارمیگیردو در ادامه نیز به معرفی مدل کاساندار خواهیم پرداخت. 

کلید واژه: پایگاه داده، NoSql، پایگاه داده غیر رابطه ای، مدل کاساندار، انواع پایگاه داده NOSQL

فهرست مطالب

چکیده
مقدمه
فصل اول
مروری بر پایگاه داده های رابطه ای و
آشنایی با نسخه های مختلف SQL
۱-MS SQL Server
۱-۱ OnLine Transaction Processing System( OLTP )
۱-۲ (OnLine Analytical Processing System) OLAP
۱-۳ تاریخچه SQL Server
۱-۴ آشنایی با SQL Server 2000
۱-۵ آشنایی با SQL Server 2005
۱-۶ آشنایی با SQL Server 2008
۱-۷ آشنایی با Sql Server 2012
۱-۷-۱ ویژگیهای Sql Server 2012
۱-۷-۲ SQL Server 2011 و برنامه نویسی
۱-۷-۳ Ad-Hoc Query Paging
فصل دوم
آشنایی با پایگاه داده های غیر رابطه ای و
بررسی تفاوت های فنی میان NoSQL و SQL
۲-NoSQL چیست؟
۲-۱ مزایای استفاده از NoSQL
۲-۲ شِمای پویا
۲-۳ Auto-sharding
۲-۴ تکرار
۲-۵ کَشینگ یکپارچه
۲-۶ تفاوت های فنی میان NoSQL و SQL بهمراه توضیحات
۲-۶-۱ SQL و کاربرد آن جیست؟
۲-۶-۲ محدودیت های SQL در چیست؟
۲-۷ NoSQL چیست؟
۲-۸ مزایای استفاده از NoSQL بجای SQL چیست؟
۲-۹ معایت NoSQL چیست؟
۲-۱۰ تقسیم بندی :
فصل سوم
NoSQL و معرفی مدل کاساندار در آن
۳- نگاهی متفاوت به NoSQL :
۳-۱ مفاهیم کاساندرا CASSANDRA
۳-۲ کاساندرا در ۱۰۰ کلمه
۳-۳ مدل داده‌ای
۳-۴ مفاهیم بنیادی
۳-۵ نصب و پیکربندی کاساندرا
۳-۶ کار با داده‌ها
۳-۶ اتصال به کاساندرا از طریق برنامه‌ها
۳-۷ استفاده از کاساندرا از طریق .NET
۳-۸ نگاهی به مدلسازی داده ها در کاساندرا
۳-۸-۱ انواع کلید در کاساندرا
۳-۸-۲ نحوه مرتب سازی داده ها در کاساندرا
۳-۸-۳ طراحی جداول بر اساس پرس و جو های مورد نیاز
۳-۸-۹ راه حل پیشنهادی برای مشکل فوق
نتیجه گیری
منابع و ماخذ

 

مقدمه :
اصطلاح NoSQL اولین بار در سال ۱۹۹۸ توسط Carlo Strozzi برای پایگاه‌داده‌های رابطه‌ای‌ای که از زبان SQL استفاده نمی‌کردند به کار رفت . بعدها مجدداً در سال ۲۰۰۹ در اجلاس در San Francisco که مدافعین پایگاه‌داده‌های غیر رابطه‌ای گرد هم آورده بود مورداستفاده قرار گرفت. ازجمله این مدافعین می‌توان به Jon Oskarsson و Eric Evans اشاره نمود. اخیراً NoSQL به معنای “نه‌فقط SQL”(Not Only SQL) به دسته بزرگی از پایگاه‌داده‌ها اطلاق می‌شود که خصوصیات پایگاه‌داده‌های رابطه‌ای را ندارند و برای جستار زدن(query) از زبان توصیفی(declarative language) SQL استفاده نمی‌کنند. ازجمله بارزترین ویژگی‌های این دسته از پایگاه‌داده‌ها می‌توان به موارد زیر اشاره نمود:
• مدل داده غیر رابطه‌ای (Non-relational data model): محدودیت مدل رابطه‌ای در پشتیبانی از ابر داده‌ها(big data) و داده‌هایی با ساختارهای ترکیب‌شده(mixed-structured data) یعنی داده‌های ساخت‌یافته(structured)، نیمه ساخت‌یافته(semi- structured) و غیر ساخت‌یافته(unstructured) یکی از دلایل اصلی معرفی NoSQL بود.
• طراحی‌شده برای محیط‌های توزیع‌شده: جهش‌های صورت گرفته در توسعه معماری کامپیوتر، پردازش‌های توزیع‌شده و موازی(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 ای نیز بدان توجه وافری داشته‌اند.

 

مروری بر پایگاه داده های رابطه ای و آشنایی با نسخه های مختلف SQL
۱-MS SQL Server
MS SQL Server یکی از سیستم¬های مدیریت بانک¬های اطلاعاتی رابطه¬ای (Relational) است که توسط شرکت مایکروسافت ارائه شده است. SQL Server از مدل سرویس دهنده – سرویس گیرنده (Client/Server) تبعیت می¬نماید. در این مدل، درخواست¬های (InQuery) سرویس¬گیرندگان برای سرویس¬دهنده ارسال و در سمت سرویس¬دهنده بررسی و آنالیز می گردند. در ادامه، پردازش¬های‌ مورد نیاز بر روی اطلاعات ذخیره شده در بانک¬های اطلاعاتی انجام و در نهایت، نتایج برای سرویس¬گیرنده ارسال خواهد شد. MS SQL Server با استفاده از مجموعه عناصری (Components) که به صورت هدفمند اجراء می گردند، قادر به تامین نیازها و درخواست¬ها از مخازن داده (Data Storages) می باشد. مخازن داده در SQL Server به دو روش زیر مدیریت می¬گردند:
۱-۱ OnLine Transaction Processing System( OLTP )
در مدل OLTP، مخازن داده به صورت جداول رابطه¬ای که عموما به جهت جلوگیری از تکرار و ناهمگونی اطلاعات به صورت هنجار (Normalize) درآمده¬اند، سازماندهی می-شوند. این نوع از بانک¬های اطلاعاتی برای درج و تغییر سریع اطلاعات توسط چندین کاربر بطور همزمان مناسب می باشند.

۱-۲ (OnLine Analytical Processing System) OLAP
در مدل OLAP مخازن داده جهت تجزیه و تحلیل و خلاصه سازی حجم زیادی از اطلاعات سازماندهی می شوند. مخازن داده و ارتباط بین اطلاعات در این مدل توسط SQL Server مدیریت می¬گردد.
یکی از اهداف مهم سیستم های مدیریت بانک های اطلاعاتی، قابلیت رشد و توسعه (Scalability) است. MS SQL Server مجموعه¬ای از پتانسیل¬ها را به منظور تامین هدف فوق ارائه نموده است که به برخی از مهم ترین آنها اشاره می گردد :
• قابلیت کار با بانک های اطلاعاتی حجیم (در حد ترابایت)
• قابلیت دسترسی هزاران کاربر بطور همزمان به بانک اطلاعاتی
• قابلیت خود سازگاری (Self Compatibility): با استفاده از ویژگی فوق، منابع مورد نیاز هر کاربر (نظیر حافظه ، فضای دیسک و …) به محض اتصال به سرور (Log in) به صورت اتوماتیک به وی تخصیص داده می¬شود و پس از Log off، منابع اختصاص یافته به منظور استفاده سایر کاربران آزاد می شوند.
• قابلیت اعتماد و در دسترس بودن (Reliability): با استفاده از ویژگی فوق می¬توان بسیاری از فعالیت¬های مدیریتی را بدون توقف سرور انجام داد (نظیر پشتیبان گیری).
• برخورداری از سطوح امنیتی بالا: بدین منظور اعتبار¬سنجی کاربران توسط SQL با اعتبار¬سنجی ویندوز تجمیع می¬گردد. در چنین مواردی، ضرورتی به تعریف کاربر در MS SQL نخواهد بود و اعتبار¬سنجی وی توسط ویندوز انجام خواهد شد.
• پشتیبانی از حجم بالای حافظه فیزیکی در سرور (در نسخه ۲۰۰۰ تا ۶۴ گیگابایت و در نسخه ۲۰۰۵ و ۲۰۰۸ متناسب با حافظه ای که سیستم عامل از آن حمایت می نماید).
• استفاده از چندین پردازنده به صورت موازی (در نسخه ۲۰۰۰ تا ۳۲ پردازنده همزمان و در نسخه ۲۰۰۵ و ۲۰۰۸ محدودیتی وجود ندارد)
• پشتیبانی از لایه ها و سوکت های امنیتی نظیر SSL ، خصوصا جهت استفاده در وب .
یکی دیگر از ویژگی های مهم سیستم های مدیریت بانک های اطلاعاتی‌، ایجاد تسهیلات لازم به منظور مدیریت بانک¬های اطلاعاتی است. بانک SQL Server با ارائه برنامه¬های جانبی نظیر Enterprise Manager، استفاده و مدیریت بانک¬های اطلاعاتی را آسان نموده است.
MS SQL Server بطور اتوماتیک در Active Directory ثبت می شود (Register)، بنابراین کاربران شبکه به راحتی می¬توانند آن را در Active Directory جستجو و در صورت نیاز به آن متصل شوند. همچنین، MS SQL Server توسط IIS پشتیبانی می¬گردد و مرورگرها با استفاده از پروتکل HTTP قابلیت استفاده از آن را خواهند داشت.

 

آشنایی با پایگاه داده های غیر رابطه ای و بررسی تفاوت های فنی میان NoSQL و SQL

۲-NoSQL چیست؟
NoSQL شامل مجموعه ای بسیط و گسترده از تکنولوژی های مختلف پایگاه داده است که در پاسخ به افزایش -بسیار سریع- حجم داده های ذخیره شده درباره کاربران، اشیاء و محصولات و نیز تناوب دسترسی به داده ها و نیازهای اجرا و پردازش، توسعه داده شده اند. از سوی دیگر، پایگاه های داده رابطه ای، به منظور مقابله با چالش های مقیاس و چابکی ای که برنامه های مدرن با آن ها روبرو هستند، و نیز بهره گیری از امکان ذخیره ارزان قیمت و قدرت پردازش بالای دنیای امروز، طراحی نشده بودند.
 اقسام مختلف پایگاه داده NoSQL
 پایگاه های داده مبتنی بر سند:
این پایگاه داده، هر کلید را با یک ساختار داده پیچیده که به عنوان سند شناخته می شود، متصل و جفت می نماید. اسناد می توانند دربرگیرنده جفتهای مختلف key-value یا key-array و یا حتی اسناد تو در تو (nested documents) باشند.
 انبارهای گرافی:
انبارهای گرافی به منظور ذخیره سازی اطلاعات درباره شبکه ها (از قبیل ارتباطات اجتماعی) مورد استفاده قرار می گیرند. انبارهای گراف شامل Neo4J و Hyper Graph DB می شوند.
 انبارهای Key-value
این نوع از انبار ها ساده ترین گونه پایگاه های داده NoSQL هستند. هر آیتم داخل پایگاه داده، به عنوان یک نام خصیصه (Attribute Name) یا کلید، به همراه مقدار (Value) آن ذخیره می شود. Riak و Voldemort نمونه هایی از انبارهای key-value هستند. برخی از انبارهای key-value همانند Redis، اجازه می دهند که هر مقدار یک “نوع” همانند عدد صحیح داشته باشد، که باعث کاربردپذیری آن می شود.
 انبارهای Wide-Column
این نوع از انبارها، برای اجرای پرس و جو در مجموعه داده های بزرگ بهینه سازی شده اند و به جای “ردیف ها” ستون های داده را در کنار یکدیگر نگهداری می کنند.
۲-۱ مزایای استفاده از NoSQL
در مقام قیاس با پایگاه های داده ارتباطی، پایگاه های داده NoSQL، مقیاس پذیرتر هستند و عملکرد بالاتری را نیز فراهم می آورند و همچنین، مدل داده آنها، موضوعات مختلفی را که توسط مدل های ارتباطی مغفول مانده اند، مورد توجه قرار می دهند، مواردی از قبیل:
o حجم بزرگ داده های ساختار یافته، نیمه ساختار یافته و بدون ساختار
o ورود کد های متداول، درخواست های پردازشی سریع
o برنامه نویسی شی گرا؛ که منعطف می باشد و براحتی قابل استفاده است
o معماری موثر و فرا مقیاس به جای معماری گران و غیر منعطف
۲-۲ شِمای پویا
پایگاه های داده ارتباطی، الزام می کنند که پیش از اینکه بتوانید داده ای را اضافه نمائید، شِما ها باید تعریف شده باشند. برای مثال؛ ممکن است که در نظر داشته باشید اطلاعاتی از قبیل نام، شماره تلفن، استان، شهر و آدرس مشتریان خود را ذخیره نمایید. در یک پایگاه داده ارتباطی باید از ابتدا بدانید چه داده هایی را می خواهید ذخیره کنید.
این انگاره (در پایگاه های داده ارتباطی) تناسب بسیار ضعیفی با رویکرد “توسعه چابک” دارد، چراکه هر بار که شما یک ویژگی جدید را کامل می نمایید، اغلب شِمای پایگاه داده شما نیاز به تغییر دارد. برای مثال؛ اگر تصمیم گرفتید که کمی دایره داده ها را توسعه دهید و برای مثال علاوه بر نام و آدرس و … مشتریان، موارد دلخواه و مورد علاقه آنها را نیز ذخیره کنید، نیازمند افزودن ستون به پایگاه داده و سپس مهاجرت کل پایگاه داده به یک شِما جدید هستید.
اگر پایگاه داده، پایگاه داده بزرگی باشد، این فرآیند بسیار کند انجام خواهد پذیرفت که زمان از کارافتادگی قابل توجهی را تحمیل خواهد کرد. همچنین اگر به صورت مکرر در حال تغییر داده های ذخیره شده توسط برنامه های خود هستید، این زمان از کار افتادن، نیز مکرراً رخ خواهد داد. همچنین با استفاده از یک پایگاه داده ارتباطی، به هیچ طریقی امکان پیگیری موثر داده هایی که از پیش کاملاً بدون ساختار و یا ناشناخته هستند، وجود ندارد.
پایگاه های داده NoSQL به منظور ایجاد امکان ورود داده ها بدون نیاز به شِما از پیش تعریف شده، ایجاد گشته اند. در واقع این نوع از پایگاه های داده، ایجاد تغییرات وسیع و در لحظه، در سطح برنامه ها را، بدون نگرانی از ایجاد اختلال در خدمت رسانی تسهیل می کنند؛ و این به این معنی توسعه سریعتر، یکپارچه سازی کد با اطمینان بیشتر و نیاز به صرف زمان راهبری کمتر پایگاه داده است.
۲-۳ Auto-sharding
پایگاه های داده ارتباطی، به دلیل روشی که ساختار دهی شده اند، معمولا به صورت عمودی ساختاردهی می شوند؛ که در این صورت، یک سِرور باید تمامی پایگاه داده را میزبانی کند تا از پایایی و تداوم دسترسی به داده ها، اطمینان حاصل شود. این امر موجب افزایش سریع هزینه ها، محدودیت مکان در مقیاس های بالاتر و ایجاد نقاط شکست نسبتاً کوچک برای زیرساخت پایگاه داده می شود. راه حل، ساختاردهی به صورت افقی است، یعنی افزودن سِرور به جای تمرکز بر افزایش ظرفیت یک سِرور یکتا.

======