PDA

View Full Version : پایگاه های داده ای رابطه ای یا غیر رابطه ای ؟ مسئله این است!



مبین رنجبر
چهارشنبه 11 اردیبهشت 1392, 20:04 عصر
شاید شما نیز با ورود یک چالش جدید به دنبال راه حل جدید نیز باشید.اما این راه حل جدید شاید نتواند همه چالش های پیش روی شما را حل کند.


پس درست انتخاب کنید.

پایگاه های داده ای رابطه ای سال هاست که مورد توجه جوامع کامپیوتری و شرکت های بزرگی همچون اوراکل،مایکروسافت و ... هستند و همچنان در حال بهره دهی به خیل عظیمی از نرم افزار ها و سیستم های مالی و اداری و تجاری است.اما این مدل داده ای تا ابد پاسخگوی چالش های روز این جامعه نیست.چالش امروز "داده های بزرگ" نام دارد.داده هایی که شرکت گوگل در هر ثانیه تولید میکند به میلیون ها سطر می رسد.و همچنین داده هایی که از مراکز هواشناسی در مورد وضع جوی به پایگاه های داده ای می رسد.همگی این ها با این چالش روبرو هستند.

اما سوال اینجاست که کدام مدل را انتخاب کنیم؟

جواب سوال با توجه به شرایط زیر داده خواهد شد :

چه زمانی از پایگاه های داده ای رابطه ای استفاده کنیم؟

زمانی که :

نیاز به جدول دارید.
داده های شما ساده و روشن هستند.
فیلد های جداول تک مقداری است.
به عملیات ACID نیاز دارید.(البته این مورد در یکی از پایگاه های داده ای غیر رابطه ای که به تازگی پا به این عرصه گذاشته به طور کامل پشتیبانی می شود.)
ارجاع های یکپارچه دارید.
داده های شما ساختاری یکتا و یکپارچه دارد.

چه زمانی از پایگاه های داده ای غیر رابطه ای استفاده کنیم؟

زمانی که:

داده های شما در کسری از ثانیه به مقیاس بزرگی می رسد.
داده های شما بدون ساختار و پراکنده است.
هر لحظه ممکن است هر فیلد داده ای تبدیل به 2،3 و یا بیشتر شود.
هر فیلد داده ای از آرایه ای از مقادیر تشکیل شده است.
نگران پایداری و تداوم داده ها هستید.
نگران خارج از دسترس شدن سرور هستید.
داده های شما در بستر ابری ذخیره شده است و میخواهید از دیتابیس های توزیع شده استفاده کنید.

این ها بخشی از دلایلی بودند که در اینجا مطرح شدند.

karbord83
دوشنبه 16 اردیبهشت 1392, 21:03 عصر
ممنون از مطلبتون
یک سوال خیلی ساده
آیا برای یک نرم افزار اتوماسیون اداری با تعداد کاربر مثلا 300.000 نفر باید سراغ nosql رفت؟

مبین رنجبر
دوشنبه 16 اردیبهشت 1392, 21:12 عصر
ممنون از مطلبتون
یک سوال خیلی ساده
آیا برای یک نرم افزار اتوماسیون اداری با تعداد کاربر مثلا 300.000 نفر باید سراغ nosql رفت؟

خواهش میکنم.
جواب سوالتون البته در این تاپیک مطرح شده ولی خوب باید دید اون 300.000 نفر کاربر چه اطلاعاتی با چه ساختاری تولید میکنند.

armin-html
جمعه 14 تیر 1392, 09:59 صبح
سلام.

عبارت NoSQL همونطور که میدونین مخفف NotOnlySQL هست.
بر اساس همین موضوع سعی شده پایگاه های داده رابطه ایی در کنار پایگاه های داده NoSQL قابل استفاده باشه.
یک مفهوم خیلی جالب تو NoSQL وجود داره به عنوان PolyglotPerisistance. این مفهوم این رو میگه که برای هر مسئله ایی یا موضوعی، بهترین گزینه رو انتخاب کن.
تو برنامه نویسی هم یه چیزی تو مایه های PolyglotPerisistance وجود داره به اسم Polyglot Programming.
احتمالا میدونین که تو توسعه خیلی از نرم افزار ها از چند زبان برنامه نویسی استفاده شده. برای مثال به دلایلی ازC برای یه بخش، از روبی برای یه بخش یا جاوا و پایتون واسه بعضی دیگه از بخش های دیگه توسعه نرم افزار استفاده شده. از مهمترین دلایلی که برای عقلانی بودن این کار میشه نام برد قدرت محاسباتی، پردازشی و ویژگی هایی هست که هر زبان برنامه نویسی مختص خودش رو داره و یا اختصاصا واسه اون موضوع تولید شده.

تو عصر جدید پایگاه های داده هم این مفهوم قابل درک هست...
فرض کنین میخواین یک شبکه اجتماعی طراحی و تولید کنین. از پایگاه های داده ایی زیر میتونین واسه بخش هایی که مگن میشه استفاده کرد:
MySQL: واسه ذخیره سازی داده هایی که کم حجم و با ارزش هستن ولی غالبا تغییر نمیکنن یا تراکنش خیلی عجیب و قریبی ندارن و همچنین واسه تمامی کاربران به شکل ثابتی وجود دارن. مثل مشخصات پروفایل و یا اطلاعات صورت حسابشون که میشه با یه طراحی خوب و ایندکس کردن و تکنیک های دیگه، راحت مدیریت کرد.

از CouchDB یا MongoDB واسه ذخیره سازی داده های با ارزش و در عین حال حجیم مثل وقایع نگاری فعالیت کاربران ( Log). از این پایگاه ها که به پایگاه های داده Document-Oriented Database معروفن اغلب واسه داده هایی که به ندرت تغییر میکنن یا اینکه نسخه سازی توشون خیلی اهمیت داره، استفاده میشه.

از Neo4j که یک فریم ورک پایگاه داده گرافی هست مثلا واسه درست کردن سیستم جستجو خیلی باحال که از نود های توش و یال های بین نود ها بشه روابط خیلی جالبی رو بین چیز های مختلف پیدا کرد. همین گراف سرچ ×فیس*****بوک× مثال خوبی واسه کاربرد این نوع پایگاه داده هست. برای مثال اگه دوست داشتین بدونین پسر خاله های بالای ۳۰ سال دوستاتون که عاشق کوهنوردی و فیلم دیدن هستن، تو سن میشل فرانسه قهوه خوردن و عکس گرفتن، از بستنی دایتی خوششون میاد، احتمالا از چه غدا هایی متنفرن (بر اساس الگوریتم های فرا اکتشافی و هوشمند!)، برین سراغ این نوع پایگاه های داده.:لبخند:

از Hadoop واسه اطلاعاتی که روی حجم عظیمی از سرور های توزیع شده نه الزاما خیلی خفن و گرون ( اونایی که قدرت پردازشی خیلی عجیب و قریبی دارن) بلکه حتی سرور های قیمت متوسط یا ارزون، Scaling Out شده (سرور هایی که به صورت افقی گسترش پیدا کرده) که این کار مبتنی بر تکه تکه کردن داده ها (Data Partitioning) هست. خیلی جالبه بدونین گوگل و یاهو از همین فریم ورک پایگاه داده واسه ذخیره صفحات وب تو سرور هاشون، همچنین تکنیک هایی که تو پرس و جو های موازی و ایندکس کردن به همراه الگوریتم های پیشرفته و بسیار بسیار محرمانه ایی که هممون در موردش شنیدیم، واسه سرچ استفاده میکنن.

بالاخره مواردی که واسه پایگاه های داده NoSQL وجود داره خیلی زیادن که هر کدومشون تو یه سری زمینه ها خیلی خوب عمل میکنن.
این رو هم بگم نمیشه خیلی نسخه پیچید که فلان فریم ورک پایگاه داده NoSQL مختص این کاره ولی به درد کارای دیگه نمیخوره. هر چی باشه نقش اصلی رو طراحی پایگاه داده بازی میکنه. شاید یه طراحی اونقدر عالی باشه که بشه باهاش یه کارای که از اون فریم ورک انتظار نمیره رو ممکن کرد.
الانه خیلی از این پایگاه های داده Open Source هستن و قابلیت های جدیدی هر روز بهشون اضافه میشه که اونا رو شاید یه جورایی کاربردی تر و احتمالا عمومی تر، بکنه.

s.ahmad
سه شنبه 01 مرداد 1392, 09:48 صبح
احسنت . خیلی جالب بود... اگر کامل تر هم بفرمایید ممنونتون میشیم:خجالت:

Dead Space
چهارشنبه 09 مرداد 1392, 22:08 عصر
من الان درگیر پروژه ای هستم که در عرض ۲۰ روز داده های یک جدولش به ۳۷ میلیون رسیده.
بانکشم MySQL هستش.
یعنی پیشنهاد اینه که به سمت NoSQL بریم ؟ :-؟

مبین رنجبر
چهارشنبه 09 مرداد 1392, 23:59 عصر
من الان درگیر پروژه ای هستم که در عرض ۲۰ روز داده های یک جدولش به ۳۷ میلیون رسیده.
بانکشم MySQL هستش.
یعنی پیشنهاد اینه که به سمت NoSQL بریم ؟ :-؟

در این تاپیک شرح کامل جواب شما آمده است . اگر توضیحات بیشتری می خواهید در همان تاپیک بفرمایید :

مشاوره انتخاب جایگزین برای MySQL (http://barnamenevis.org/showthread.php?410992-%D9%85%D8%B4%D8%A7%D9%88%D8%B1%D9%87-%D8%A7%D9%86%D8%AA%D8%AE%D8%A7%D8%A8-%D8%AC%D8%A7%DB%8C%DA%AF%D8%B2%DB%8C%D9%86-%D8%A8%D8%B1%D8%A7%DB%8C-MySQL)

cups_of_java
پنج شنبه 10 مرداد 1392, 11:46 صبح
من الان درگیر پروژه ای هستم که در عرض ۲۰ روز داده های یک جدولش به ۳۷ میلیون رسیده.
بانکشم MySQL هستش.
یعنی پیشنهاد اینه که به سمت NoSQL بریم ؟ :-؟

لزومن نمیشه گفت آره! اما به احتمال زیاد! باید پارامتر های مختلفی رو بررسی کنید. این حجم از اطلاعات اگه به طور ثابت قراره وجود داشته باشه موضوع شما کمی نزدیک به Big Data هست که وقتی روش سرچ کنید هم سر نخ دستتون میاد.

iraqiranbiz.com
یک شنبه 11 اسفند 1398, 09:38 صبح
مرسی
ثبت شرکت در عراق (https://www.iraniraqbiz.com)