نمایش نتایج 1 تا 4 از 4

نام تاپیک: انتخاب پایگاه داده مناسب برای هوش مصنوعی

Threaded View

پست قبلی پست قبلی   پست بعدی پست بعدی
  1. #2
    کاربر دائمی آواتار -سیّد-
    تاریخ عضویت
    فروردین 1393
    محل زندگی
    تهران
    پست
    233

    نقل قول: انتخاب پاگاه داده مناسب برای هوش مصنوعی

    من نمی‌تونم جواب کاملی به شما بدم. ولی چند تا نکته به نظرم می‌رسه.
    اول این که تا وقتی که پایگاه‌های داده‌ی رابطه‌ای مشکل شما رو حل می‌کنن، خییییییییییییلی به نفعتونه که به سمت پایگاه‌های داده‌ی غیر رابطه‌ای نرین، چون یه لایه پیچیدگی اضافه می‌شه. نکته‌ی مهمی که توی پایگاه‌های داده‌ی NoSql وجود داره اینه که معمولاً به خوبی scale می‌شن. اگه تا اطلاع ثانوی (یعنی مثلاً تا ۵ سال دیگه) از نظر حجم داده به مشکلی برنخواهید خورد، توصیه‌ی اکید می‌کنم که سمت NoSql نیاین.

    نقل قول نوشته شده توسط aliagamon مشاهده تاپیک
    فاکتور سرعت جستجو هم درنظر بگیرین ممکنه حجم پایگاه بعد از چند سال ده ها گیگ بشه
    دهها گیگ برای پایگاه‌های داده‌ای مثل MySql هیچی نیست. ما توی موتور یوز، چند صد گیگابایتی از MySql استفاده می‌کنیم و به خوبی داریم جواب می‌گیریم (یعنی در حد چند میلی‌ثانیه به ما جواب می‌ده). از نظر تعداد رکوردها هم به راحتی صدها میلیون رکورد رو جواب می‌ده. تازه اینو در نظر بگیرید که معمولاً این جور کارا به صورت batch انجام می‌شه، در حالی که ما به صورت realtime داریم از MySql استفاده می‌کنیم (یعنی داده‌های جدید به محض ورود به سیستم وارد پایگاه‌های داده می‌شن). البته این رو هم بگم که ما توی بخش‌های مختلف موتور هم از پایگاه‌های داده‌ی رابطه‌ای استفاده می‌کنیم، هم از پایگاه‌های داده‌ی غیر رابطه‌ای. به عنوان مثال، index رو توی پایگاه داده‌ی رابطه‌ای ذخیره نمی‌کنیم، چون مقیاس خیلی بالا هست و باید scalable باشه.

    اینجوری که گفتید، فکر می‌کنم می‌تونید یه جدول برای key ها تعریف کنید، یه جدول هم برای خود value ها. بعد یه جدول برای گروه‌های value، یه جدول هم برای ارتباط بین key ها و گروه‌های value. یعنی همون مثال اولی که زدید اینطوری می‌شه:
    key
    name id
    Key1 1
    Key2 2
    Key3 3
    Key4 4
    Key5 5

    value
    value id
    Value1 1
    Value2 2
    Value3 3
    Value4 4
    Value5 5

    value_group
    value_id group_id
    1 1
    2 1
    3 1
    4 1
    5 1

    key_value_group
    value_group_id key_id
    1 1
    1 2
    1 3
    1 4
    1 5


    البته من این جداول رو خیلی سریع طراحی کردم، شاید بشه بهتر هم طراحی کرد (بستگی به کاربرد دقیقتون هم داره، مثلاً شاید بتونید اون جدول کلید رو کلاً حذف کنید و مستقیماً خود کلیدها رو توی جدول آخر استفاده کنید).

    در نهایت هم بگم که همه‌ی اینها به یه سری پارامتر وابسته هست: نحوه‌ی طراحی جداول (و در نتیجه query ها)، نحوه‌ی انتخاب engine ها و index ها، سخت‌افزار مورد استفاده (مثلاً اگه از هارد دیسک SSD استفاده کنید، سرعت خوندن داده به مراتب سریعتر می‌شه، یا این که حتماً به اندازه‌ی کافی RAM به سیستم بدید که cache اش به خوبی استفاده بشه) و ...
    در نتیجه حتماً توصیه می‌کنم یه بار روی یه پایگاه داده‌ی رابطه‌ای آزمایش کنید. یعنی اون حد بالایی که فکر می‌کنید (مثلاً ۳۰ گیگ) رو شبیه‌سازی کنید و توی پایگاه داده بریزید و روش تست کنید. اگه سرعتتون افتضاح شد، اون وقت باید یه فکر دیگه بکنید (باز ممکنه بتونید optimize کنید و سرعت رو چندین برابر کنید، یا ممکنه بعد از انجام تمام optimization ها به این نتیجه برسید که به سراغ پایگاه‌های داده‌ی NoSql بیاید).

    این رو هم در نظر داشته باشید: قطعاً سرعت پاسخگویی پایگاه‌های داده‌ی NoSql به مراتب کمتر از سرعت پایگاه‌های داده‌ی رابطه‌ای هست (در صورتی که یک سرور رابطه‌ای رو با یک سرور غیر رابطه‌ای مقایسه کنیم). یعنی اگه روی یه سرور MySql بذارید، روش یه تعداد مشخصی داده بریزید، روش تست بزنید، بعد روی همون یک سرور یه پایگاه داده‌ی NoSql بذارید، و روش همون داده‌ها رو بریزید و تست کنید، شاید تا دهها برابر کندتر جواب بگیرید. پس پایگاه‌های داده‌ی NoSql به چه درد می‌خورن؟ اولیش اینه که بعضی جاها اصلاً نمی‌تونید با پایگاه‌های داده‌ی رابطه‌ای داده‌تون رو مدل کنید. اون جاهایی که می‌تونید این کار رو بکنید چی؟ نکته‌ی مهمشون توی اینه که می‌تونید برای یه پایگاه داده‌ی NoSql از مثلاً ۲۰ تا سرور با مشخصات معمولی استفاده کنید، به جای این که یه سرور خفن بذارین برای MySql که قیمتش ۱۰۰ برابر اونا در بیاد! و این که می‌تونید با ۵ تا سرور شروع کنید، در اثر مرور زمان که داده زیاد شد، تعداد رو افزایش بدید (چیزی که توی پایگاه‌های داده‌ی رابطه‌ای به راحتی قابل انجام نیست). و همچنین این که به شما قابلیت تحمل‌پذیری خطا رو می‌دن، یعنی اگه یه سرور بترکه، اتفاقی برای کل سیستم نمی‌افته، در حالی که اگه اون یه دونه سرور خفن MySql تون بپکه، همه چیز از دست می‌ره! پس باید بکنیدش ۲ تا! در نتیجه هزینه ۲ برابر می‌شه!
    آخرین ویرایش به وسیله -سیّد- : دوشنبه 01 تیر 1394 در 03:38 صبح دلیل: فرمت کردن نوشته

تاپیک های مشابه

  1. انتخاب یه پایگاه داده مناسب برای نرم افزار کوچک
    نوشته شده توسط pcb20parse در بخش تحلیل و طراحی بانک اطلاعات
    پاسخ: 6
    آخرین پست: پنج شنبه 24 اردیبهشت 1394, 18:27 عصر
  2. انتخاب پایگاه داده مناسب برای سایت
    نوشته شده توسط salmah در بخش ASP.NET Web Forms
    پاسخ: 5
    آخرین پست: شنبه 29 آذر 1393, 00:16 صبح
  3. انتخاب پایگاه داده مناسب برای سایت
    نوشته شده توسط salmah در بخش تحلیل و طراحی بانک اطلاعات
    پاسخ: 1
    آخرین پست: جمعه 02 اسفند 1392, 12:03 عصر
  4. سوال: کمک برای انتخاب یک پایگاه داده مناسب برای یک برنامه
    نوشته شده توسط si6arp در بخش C#‎‎
    پاسخ: 9
    آخرین پست: چهارشنبه 10 شهریور 1389, 17:23 عصر
  5. پایگاه داده مناسب برای برنامه مترجم
    نوشته شده توسط hercules در بخش سایر پایگاه‌های داده
    پاسخ: 3
    آخرین پست: شنبه 19 فروردین 1385, 01:27 صبح

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •