PDA

View Full Version : nosql sql newsql کدام یک



barnamenevisaz
چهارشنبه 09 مرداد 1392, 13:54 عصر
انتخاب بانک اطلاعاتی مناسب در بین انواع بانکهای اطلاعاتی که امروزه در دنیا رواج پیدا کرده اند خود به مهارتی جدید تبدیل شده است .
اکثر ما عادت کرده ایم برای ذخیره اطلاعاتمان از MySQL یا SQL Server به طور سنتی استفاده کنیم و داده ها را در قالب جداول و رابطه بین آنها مدل سازی کنیم .
اما در دنیای تجاری امروز حجم عظیم داده هایی که برای بسیاری از کاربردها و نرم افزارها نیاز داریم با ساختار سنتی بانکهای اطلاعاتی قابل پیاده سازی نیستند.
مثالی عرض می کنم . مدتی پیش یکی از دوستان خارج از کشور که سایتی را برای نمایش ویدیوهای پرطرفدار شبکه های اجتماعی مانند فیس بوک راه اندازی کرده بودند در عرض چند ماه میلیونها رکورد را مجبور می شوند در بانک اطلاعاتی MySQL ذخیره کنند. یک روز بخشی از سایت از کار می افتد و با بررسی فایل ثبت تراکنش های سرور به این خطای بانک اطلاعاتی می رسند که برای اجرای یک دستور Select که نیاز به ارتباط چند جدول داشته است به ۱۳۰ گیگابایت فضای موقت روی سرور نیاز داشته که در دسترس نبوده است ..
این نیاز ذخیره سازی کلان داده باعث بوجود آمدن نوع جدیدی از بانک های اطلاعاتی به نام NoSQL‌ شده است که قبلاْ در همین سایت راجع به آنها نوشته ام . بانکهای اطلاعاتی که مخصوص حجم عظیم داده ها طراحی شده اند و در آنها خبری از محدودیت های بانک های اطلاعاتی کلاسیک نیست و در بسیاری از آنها هم اصلا جدول و ارتباط نداریم . مثلا در بانکهای اطلاعتی سند محور مانند مانگو تمام اطلاعات یک دانشجو مانند اطلاعات شخصی و دروس پاس شده و درخواستهای تحصیلی همه در یک سند ذخیره می شوند که اگر نیازی به اطلاعات یک دانشجو داشتیم همه را یکجا داشته باشیم .
در بسیاری از این بانکهای اطلاعاتی تراکنش به معنای رایج آن در بانکهای اطلاعاتی کلاسیک را نداریم که البته برای بسیاری از کاربردها هیچ مشکلی ایجاد نمی کند مثلا سایتی که الان در حال طراحی آن با کاساندرا و پایتون هستیم قرار است اخبار را بر اساس محبوبیتشان روی شبکه های اجتماعی دسته بندی کند . حال اگر آمار یک خبر را تازه به روز کردیم ممکن است در همان لحظه در تمام سرورها به روز نشده باشد و بعضی از کاربران خبرمحبوب چند دقیقه پیش را ببینند که مشکلی در سایت ایجاد نمی کند . کافیست کاربر چند دقیقه دیگر سایت را بروز کند و اطلاعات جدید را مشاهده کند اما در کاربردهایی که تراکنش ها مهم هستند و همه باید یک داده را ببینند مانند تراکنشهای بانکی یا خریدهای اینترنتی باید از روش دیگری استفاده کرد .
بانکهای اطلاعاتی نوینی که امروزه به نام NewSQL شناخته می شوند در راستای همین نیاز به وجود آمده اند . بانکهایی که هم مقیاس پذیرند و با حجم عظیم داده ها مشکلی ندارند و هم مزایای بانکهای رابطه ای را دارند از جمله این بانکها می توان به VoltDB و جدیدا بانک اطلاعاتی Spanner که محصول گوگل است اشاره کرد.
مدتیست بحث Polyglot Persistence یا استفاده از چند بانک اطلاعاتی در یک برنامه مطرح شده است یعنی شما برای ثبت رخدادها از یک بانک اطلاعاتی - داده های کاربران جاری مقیم درحافظه از یک بانک اطلاعاتی و داده های اصلی برنامه ازیک بانک دیگر استفاده کنید که در بسیاری از شرکتهای بزرگ هم این رهیافت استفاده می شود .
خلاصه کلام اینکه برای تعیین بانک اطلاعاتی برنامه ای که در حال طراحی آن هستید به داده های کلاسیک بانکهای اطلاعاتی بسنده نکنید ....


منبع : banaie.ir


..............................................
مدتی هست کارم را با nosql شروع کردم ...
البته الان در حد صفر بلدم با این سیستم کارکنم :)
اما مثل اینکه قوی تر از nosql هم هست ...
دوست دارم نظر کاربران سایت و مدیر این بخش از انجمن را نه به شکل حرفه ای بلکه به شکل ساده بدونم ...
چون من تازه می اواهم سطح اطلاعاتی خودم را در زبانهای دیگر و دیتابیس های دیگر بالا ببرم ...




با تشکر

cups_of_java
چهارشنبه 09 مرداد 1392, 14:31 عصر
بحث قوی و ضعیف نیست!
یک جاهایی خصوصیات استفاده از SQLی ها رو داره،‌ یک جاهایی هم استفاده از NoSQL ها خیلی مناسب تره.
شما باید این دو رو بشناسید و خوب با نقاط ضعف و قوت هر کدوم آشنا بشی. باید باهاشون به طور دستگرمی کار کنی حتی.
اما NewSQL یک موج جدیدیه که چند ساله SQLی ها راه انداختن تا از قافله NoSQL عقب نمونند ولی هنوز به شهرت و استفاده صنعتی نرسیده و در حد پروژه های جسته و گریختست.
طبیعتن نمیشه راهی که ۲۰ ساله رفتند رو چند ساله برن. بین این ها هم فقط Google Spanner, Clustrix, NuoDB ماندگاری دارن. VoltDB فقط تو مموری نگهداری می کنه (مثلن مثل Redis)

شما سعی کن این کتاب رو حتمن بخونی:
http://martinfowler.com/books/nosql.html

barnamenevisaz
چهارشنبه 09 مرداد 1392, 14:54 عصر
به خاطر این گفتم قوی هست چون هم قابل فهم تر از nosql هست که می گویند نه فیلد داره نه جدول و نه رکورد ...
و یعنی مثل همون چیزی هست که بسیار از ما با اون سرو کار داشته ایم sql
سرعت مفید . و ... هم داره

ولی میگم اینطور که معلومه خیلی پرت صحبت میکنم . که شما دوستان از حرف های من متعجب میشوید ...
چون درک درستی روی این مسئله ندارم , و برای فهماندن منظورم باید چند سطر توضیح بیشتر که شاید وارد جاهای بی ربطی از موضوع هم بشوم می نویسم :)

و اما از اون کتاب , خب این رو باید من با کارتهای بین امللی پرداخت کنم .
ندارم که . تازه بعد برای اینکه درست ترجمه کنم باید ببرم میدون انقلاب ...
کلا هزینه میزنه بالای 150 هزار تومان ... .

چیز جالبی یادم آوردید . و آن این هست که
کتاب یا سی دی آموزشی جامع و کامل درباره ی تفاوت های sql و noaql و نحوه ی کار کامل با مثلا CouchDB نیست ...
و اگر معرفی کردید کدام انتشاراتی ؟
با تشکر

cups_of_java
چهارشنبه 09 مرداد 1392, 19:41 عصر
شما انگلیسیت اگه ضعیفه باید انگلیسیت رو قوی کنی، با خوندن متن های ساده توی اینترنت شروع کن، اولش سخه اما کم کم هم سواد کامپیوتریت زیاد میشه هم انگلیسیت خوب میشه.
باید خیلی مطالعه کنی و تو اینترنت باشی تا کم کم تجربت بالاتر بره. نه اینکه نا امید بشی یا بخوای ناراحت بشی.
راحع به Couchdb بعید می دونم مطلب فارسی پیدا کنی، تازه راجع به NoSQL هم فکر نمی کنم کتاب یا CDای باشه فارسی

در مورد NewSQL هم درسته که همه با SQL آشنا هستیم و برامون ساده به نظر میاد اما در واقع SQL خیلی پیچیدست و سخت! تو سیستم های بزرگ مایه دردسرهای زیادی میشه، حتی نوشتن بعضی queryها دانش زیادی میخواد تا درست و بدون خراب کاری کار کنه. اتفاقن NewSQL برای حل اینجور مشکلات تو SQL اومده
برعکس NoSQL سادست و مفاهیم خیلی اولیه و جمع و جوری داره
شما وقتی مدل جدولی SQL داری، مفاهیم پیچیده ریاضی و رابطه ها و نرمال سازی و ... مطرح میشه. توی اکثر NoSQL ها اصن این چیزا نیست و بسیار ساده گرفتن موضوع رو
نقطه نظر دیگه راجع به ACID میشه، کنترل توازی و ACID توی DBMSها خیلی سخت و پیچیدست و شما تنظیمات خاصی که دانش خاص میخواد داری، اما اکثر NoSql ها با دید دیگه ای ACID رو براورده میکنن که ساده تر بشه موضوع

مبین رنجبر
چهارشنبه 09 مرداد 1392, 21:00 عصر
با سپاس بسیار از دوست عزیز cups_of_java ، فکر میکنم توضیحات واضح و کامل رو ایشون دادند.من هم تمامی مسائل پایه ای و کمکی رو در تاپیک های دیگر خدمت شما عرض کردم.تاپیک های صفحه اصلی انجمن هم در کنار اون توضیحات هستند.این گوی و این میدان.