PDA

View Full Version : مقاله: پایگاه داده های جدید؛ خداحافظ SQL



taknegaar
سه شنبه 11 خرداد 1389, 21:01 عصر
مروري بر پايگاه‌‌هاي داده‌اي نوين
بدرود SQL !


اگر گمان مي‌کنيد که ديتابيس‌هاي SQL 1 همه از نوع رابطه‌اي هستند، بايد بگوييم که اشتباه مي‌انديشيد.
NoSQL يك پايگاه داده‌اي غيررابطه‌اي و توزيع شده است که نيازي به جدول ندارد و مي‌تواند به‌سادگي عمليات Replication را انجام دهد.
البته ايده پايگاه داده NoSQL تقريبا 10 سال است که در محافل اينترنتي وجود داشته است.
اين بانك اطلاعاتي در سال‌هاي اخير توجه زيادي را به‌سوي خود جلب کرده است.
اين پايگاه داده را دو نام بزرگ پياده‌سازي کرده‌اند و همين باعث جلب توجه به چنين پايگاه داده‌اي شده است:
آمازون دينامو و گوگل بيگ‌تيبل از ديتابيس‌هايي هستند که فرزند NoSQL به‌شمار مي‌روند.
البته اين پايگاه داده انواع منبع‌باز مختلفي نيز دارد که مي‌توان از ميان آن‌ها به Cassandra ، CouchDB Hbase ، MongoDB Redis ، Riak و CouchDB (http://couchdb.apache.org/) اشاره کرد.
در سال‌هاي اخير، پديده NoSQL به يک جنبش تبديل شد و در بسياري از کشورهاي توسعه‌يافته، اين شکل پايگاه داده را به‌عنوان پايگاه داده‌اي مطمئن در اختيار گرفته و استفاده کردند.
ديتابيس‌هاي NoSQL آنجايي جذاب مي‌شوند که ضعف‌هاي RDBMS 2 به‌چشم مي‌خورد:
اين پايگاه‌هاي داده براي يک کاربر و يک دستگاه و يک عمليات در لحظه ساخته شده‌اند.
RDBMS ها جوابگوي نظام محاسباتي فعلي دنيا نيستند
که در لحظه هزارها و ميليون‌ها کاربر مي‌خواهند به پايگاه داده‌اي پر از تصوير و فيلم و داده ديجيتال دسترسي پيدا کنند.
يکي از تحليلگران موسسه 451 معتقد است:‌
«NoSQL پايگاه داده‌اي است که توسط امثال گوگل، آمازون، فيس‌بوک و تويتر به‌کار گرفته مي‌شود.»
به‌گفته او گوگل و ديگر شرکت‌هايي که نام برده شدند، از NoSQL براي بالابردن بازدهي و ميزان گسترش‌پذيري سيستم استفاده مي‌کنند و در مقايسه با ديتابيس‌هاي سنتي، صرفه‌جويي زيادي در هزينه و انرژي خواهند کرد.
دمين کتز، يکي از موسسان شرکت Couchio و توسعه‌دهنده پايگاه CouchDB معتقد است:
«شرکت‌ها و توسعه‌دهندگان از NoSQL به‌اين دليل استفاده مي‌کنند که تفکرات خود را با SQL نمي‌توانند پياده کنند.»
يکي از توسعه‌دهندگان پايگاه داده Riak که مشترياني همچون Comcast و Electronic Arts را در کارنامه خود دارد، معتقد است:‌
«دسترسي بالاي پايگاه‌هاي داده NoSQL چيزي است که در ديتابيس‌هاي سنتي نمي‌توان آن‌ها را يافت. اين دسترسي بالاست که اجازه خواندن و نوشتن همزمان را به‌ديتابيس NoSQL مي‌دهد.»
گفتني است Riak در الکترونيک‌آرتز، به‌منظور ذخيره‌سازي اطلاعات هفت ميليون کاربر بازي آنلاين Warhammer در فيس‌بوک به‌کار مي‌رود که هر نيم دقيقه اطلاعات تک تک کاربران را به‌روز مي‌کند.
از سوي ديگر، در پايگاه داده CouchDB به‌جاي دسترسي بالا، مساله کنترل توزيع بهتر پياده شده است و مي‌توان پايگاه‌داده سندگراي کاملا توزيع‌شده‌اي ايجاد کرد که به‌سادگي کنترل مي‌شود.
برخلاف پايگاه‌هاي داده SQL که داده‌ها را در ساختارهاي بسيار منظمي ذخيره مي‌کردند و گزارش مي‌دادند،
CouchDB تلاش دارد اين اطلاعات را در سندهاي مجزايي که ساختاري نصفه و نيمه دارند، ذخيره و بازيابي کند.
به‌عبارت ديگر CouchDB براي نرم افزارهاي وب چندنفره (Collaborative) که مبتني بر سندها و پرونده‌ها هستند، بسيار مفيد خواهد بود.
يکي از مشتريان اين پايگاه داده، BBC است که روزانه 150 ميليون درخواست را پاسخگو است.
يکي ديگر از ويژگي‌هاي CouchDB و در كل ديتابيس‌هاي NoSQL، ارتقاپذيري بهتر آن‌ها نسبت به پايگاه‌هاي داده‌اي قديمي‌تر است.
ارتقاي ديتابيس در سيستم‌هاي SQL به‌منظور ارتقاي ساختار (Schema) و داده‌ها است که امکان رخ دادن خطا در آن زياد مي‌شود.
در صورتي که در ديتابيس‌هاي سندگرا، اسکيمايي وجود ندارد و داده‌هاي جديد در کنار داده‌هاي قديمي قرار مي‌گيرند و نيازي به‌تغيير ساختار وجود ندارد.



پي‌نوشت

1. Structured Query Language
2. Relational DataBase Management System


http://www.jamejamonline.ir/papertext.aspx?newsnum=100875304156

taknegaar
سه شنبه 11 خرداد 1389, 21:05 عصر
CouchDB پروژه پايگاه ‌داده جديد آپاچی


پايگاه‌هاي داده مبتني بر سند، از جديدترين سيستم‌هاي مديريت پايگاه‌هاي داده به‌ شمار مي‌آيند. (مثل لوسنت از همین آپاچی)
اين نوع از پايگاه داده، بر خلاف ديتابيس‌هاي رابطه‌اي، داده‌ها را در جداول ذخيره نمي‌كنند و در نتيجه، هيچ اندازه ثابتي براي داده‌ها در نظر نمي‌گيرند. اما، از طرف ديگر، هر ركورد به‌عنوان سندي با ويژگي‌هاي خاص ذخيره مي‌شود. در اين سند، هر تعداد فيلد با هر طولي مي‌تواند ذخيره شود. براي مثال، سند زير را در نظر بگيريد:

FirstName=”Bob”, Address=”5 Oak St.”, m Hobby=”Sailing”.
اين سند مي‌تواند يك ركورد ديتابيس باشد. از طرف ديگر، سند زير هم مي‌تواند ركورد ديگري از همان ديتابيس باشد:

FirstName="Jonathan", Address="15 Wanamassa Point Road", Children=("Michael,10", "Jennifer,8", "Samantha,5", "Elena,2").
حتما به اين نكته توجه كرده‌ايد كه بين اين 2سند ممكن است فيلد يكسان وجود داشته باشد و ممكن است هر كدام براي خود ويژگي‌هاي خاصي داشته باشند. نكته جالب ديگر در مورد پايگاه‌هاي داده مبتني بر سند، اين است كه هيچ فيلدي امكان خالي بودن ندارد. به‌اين ترتيب، اين سيستم قابليت افزودن داده در هر زمان را دارد و فضا را نسبت به ديتابيس رابطه‌اي كمتر هدر مي رود. جالب است بدانيد اين نوع از پايگاه داده، به 3فرمت XML، YAML و JSON سندهاي خود را ذخيره مي‌كند.

قبل از آنكه پروژه آپاچي، يعني ‍CouchDB كه پايگاه داده مبتني بر سند است را معرفي كنيم، لازم است اشاره‌اي داشته باشيم به كاربرد اين پايگاه داده در اوبونتو نگارش 10/9 كه در سرويس Ubuntu One خود از اين پايگاه داده براي همخواني و انتقال فايل‌ها بين چند سيستم استفاده مي‌كند.

ريلكس باشيد
كنار لوگوي ‍CouchDB، شعار Relax مشاهده مي‌شود.
دليل اين كار اين است كه قرار است مشكلاتي كه ممكن است در ايجاد ديتابيس توزيع‌شده مبتني بر سند به‌وجود بيايد، با پايگاه داده كوچ حل شود. اين پايگاه داده كارهاي زيادي براي شما انجام مي‌دهد. تنها لازم است روي خود نرم‌افزار متمركز شويد و نگران مديريت يا مشكلات جانبي نباشيد.
اين پايگاه داده همچنين رابط برنامه‌نويسي (API) ساده و قابل فهمي دارد كه RESTful است (از طريق REST مي‌توان داده‌ها را مستقیما ارسال يا دريافت كرد، یعنی زبان خاصی لازم نیست ! ...) اگر خودتان از اين پايگاه داده استفاده كنيد، متوجه خواهيد شد كه آنچه خوانديد تبليغات تجاري نيست.

قابليت‌ها
اين پايگاه داده قابليت‌هاي زيادي دارد كه گفتن همه‌ آن‌ها ممكن است. بنابراين ويژگي‌هاي اصلي آن را مطرح خواهيم كرد.
ذخيره‌سازي سندها
همانطور كه گفتيم، كوچ‌دي‌بي سندها را در خود ذخيره مي‌كند. اين داده‌ها را مي‌توانيد به‌عنوان يك سند يا مجموعه‌اي از چند جفت كليد و داده تصور كنيد. داده‌ها مي‌توانند به فرم‌ ساده‌اي مثل رشته، عدد يا تاريخ باشند، يا اين‌كه از ليست‌هاي مرتب شده و انواع آرايه‌ها تشكيل شده باشند. هر سند در ديتابيس كوچ يك شناسه منحصر به‌فرد دارد.

اسيد

ديتابيس كوچ‌ اسيد را به‌خوبي پياده كرده است (اسيد يعني اتميك بودن، ثابت بودن، ايزوله بودن و دوام داشتن يك عمليات است كه اطمينان مي‌دهد هر دستور در ديتابيس به‌طور كامل انجام شده است). اين پايگاه داده مجهز به كنترل موازي چند نگارشي (MVCC) است و برخلاف InnoDB يا اوراكل، مي‌تواند خواندن و نوشتن‌هاي موازي در حجم بالا را بدون هيچ مشكلي راه ‌بيندازد.

نگاشت/كاهش View ها و ایندکس ها

براي اينكه بتوان كمي ساختار به پايگاه داده داد، مي‌توان از نمايه‌ها (Views) استفاده كرد كه عملكردي مشابه با پايگاه‌داده رابطه‌اي دارند. در كوچ‌، هر View را يك فانكشن جاوااسكريپت مي‌سازد (تعجب نكنيد‌، درست خوانديد، جاوااسكريپت سمت سرور) كه به‌عنوان نقشه نگاشت اين عمليات خواهد بود. اين تابع يك سند را به‌عنوان ورودي دريافت مي‌كند و يك متغير را به‌عنوان خروجي پس مي‌دهد. منطق تابع جاوااسكريپت شما كمابيش پيچيده خواهد شد.
همانطور كه خودتان هم حدس زده‌ايد، چنين تابعي مي‌تواند هزينه سنگيني روي دوش ديتابيس بگذارد. ديتابيس كوچ مي‌تواند اين نمايه‌ها را شاخص‌بندي (ایندکس) كرده و هنگام به‌روزآوري، ايجاد يا حذف ركوردها، اين نمايه‌ها را هم به‌روز كند. با اين مكانيزم شاخص‌بندي، سرور دچار كندي نمي‌شود.

معماري توزيعي و همتاسازي

طراحي اوليه كوچ‌ را با در نظر گرفتن همتاسازي 2طرفه (همخوان‌سازي يا Synchronization) و عمليات آفلاين انجام داده‌اند. اين يعني هر بخش مي‌تواند داده خود را داشته باشد، آن را ويرايش كند و بعد اين تغييرات را همخوان كند.

Erlang

همانند ديگر ديتابيس‌هاي توزيعي هم‌نسل كوچ، اين ديتابيس را هم به‌زبان Erlang نوشته‌اند و از پلت‌فرمErlang OTP استفاده مي‌كند. ارلنگ زباني است كه براي سيستم‌هاي مخابراتي سريع و پايدار استفاده مي‌شد، اما برنامه‌نويسان آن را برنامه‌ جالبي براي پياده‌سازي سرويس‌هاي شبكه يافته‌اند. ارلنگ داده‌ها و فرآيندهاي سبك را كه از انتقال پيام براي اتصالات استفاده مي‌كنند، جدا مي‌كند. ضمن آن‌كه پلت‌فرم OTP راهكارهايي براي ايجاد سيستم‌هاي توزيع‌شده، بي‌درنگ و با دسترسي بالا در اختيار مي‌گذارد. با توجه به رشد سرويس‌هاي شبكه‌اي، بهره بردن از اين پلت‌فرم و اين زبان، يك امتياز براي كوچ به‌حساب مي‌آيد.

نصب كوچ
براي نصب كوچ در اوبونتو كافي است دستور زير را وارد كنيد:

sudo apt-get install couchdb
بعد از اين‌كه نزديك به 30 مگابايت داده از روي اينترنت دريافت شد، كوچ اجرا شده منتظر دستورات شما است.
كافي است آن را تست كنيد كه آيا كار مي‌كند يا خير. براي تست آن، دستور زير را وارد كنيد:

curl http://localhost:5984 (http://localhost:5984/) $
{"couchdb":"Welcome","version":"0.8.0-incubating"}
اگر اين دستور كار كرد، نصب آن با موفقيت به‌پايان رسيده است.

رابط كاربري تحت وب فوتون
بعد از اين‌كه كوچ را نصب و راه‌اندازي كرديد، مي‌توانيد با مراجعه به آدرس زير، رابط كاربري اين پايگاه داده را مشاهده كنيد:‌

http://localhost:5984/_utils
نام اين رابط كاربري فوتون است و براي چك كردن داده‌ها و انجام عمليات ساده‌اي همچون ايجاد ديتابيس، حذف ديتابيس، مديريت سندها و ... كاربرد دارد.
براي اطلاعات بيشتر در مورد اين پايگاه داده، به آدرس‌هاي زير رجوع كنيد:

http://couchdb.apache.org/
http://books.couchdb.org (http://books.couchdb.org/)

nafass
سه شنبه 29 فروردین 1391, 14:47 عصر
سلام.میشه مقاله اصلی رو بذارید در موردnosql؟؟؟؟؟ اخه من باید فقط از یک منبع اطلاعاتمو بدست بیارم.
یک مقاله در مورد اینکه پایگاه داده nosql رو معرفی کنه.
یک مقاله در مورد اینکه مدل های پایگاه دادهnosql و یا کنترل دسترسی و سطع امنیت این نوع پایگاه رو بیان کنه.
ممنون میشم مقاله ها با ذکر منبع بدین.
ممنون و متشکر