انتخاب دیتابیس GraphDB, SQl, Nosql

سلام دوستان
قصد شروع کار بروی یک شبکه اجتماعی مبتنی بر مکان رو دارم .
مشکلی که دارم تو انتخاب دیتابیس موندم (از مشکلات آدم های کمال گرا)
خود پروژه با go هست برای دیتابیس چند تا گزینه دارم به نظرم :

۱ - Sql (mysql , postgres)
مزایا:
به خاطر تجربه کار با این دیتابیس ها سرعت توسعه بالاتری رو دارم و لایبراری ها و orm زیاد داره برای راحتی کار
به خاطر relation بودن ساختار برای شبکه های اجتماعی شاید گزینه بدی نباشه
sql نوشتن خیلی راحت تره واسه من :slight_smile:
معایب:
یکی از معظلات اصلی نبود بحث flexible schema هست
مشکل دیگه ی بعدی مشکل distributed بودن هست که البته می دونم با تکنولوژی هایی مثل cockroachdb , … حل می شه ولی تجربه ای ندارم

۲- nosql بر حسب تجربه گزینه های تو این زمینه couchbase, rethinkdb , …
مزایا :
حل معظل flexible schema
راه حل های بهتر در بحث توزیع شده و…
معایب:
برای داده های با relation شاید زیاد مناسب نباشه راه حل داره ولی جزو طبیعت nosql نیست

۳ - graphDB - بازم بر حسب جستجو گزینه هایی که دارم Dgraph , tigergraph, …
مزایا:
سرعت بالاتر
حل مشکل flexible schema
مناسب برای داده های دارای ارتباط relation
سلوشن های مناسب برای توزیع داده ها و …
معایب:
آشنایی کمتر و زمانبر بودن تسلط و استفاده
عدم شناخت و تجربه

  • این گزینه های بالا تجربی و بر اساس آشنایی بنده است و نمی گم این ها درسته …خیلی هم سریع نوشتم اگر مزایا و یا معایب بیشتری به ذهنم رسید ویرایش می کنم

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

سلام
چرا داشتن flexible schema ملزومه ؟
Postgresql باپشتیبانی JSON میتونه flexible schema داشته باشه

در ضمن میشه graph database در کنار relational استفاده کرد

3 پسندیده

سلام دوست عزیز اول اینکه ممنون از پاسختون و بعد اینکه من جایی نگفتم ملزمه … گفتن یک معظله و یا سختی کاره …
حقیقت هم همینه روی این دست پروژه ها که در حال ساخت و در حال توسعه و ایده پردازی هستند و هنوز به شکل استیبلی نرسیدن از اون طرف نسخه mvp هم باید حاضر بشه باید قبول کنیم این flexible schema یک موهبته … من قصدم همین بود .

خودم با چند دیتابیسی موافقم … ولی زمانی که تیم کوچیکه و هنوز شروع کاره و قصد اینه سریع تر محصول حاضر بشه شاید این قضیه توجیح نداشته باشه … برای شروع ترجیح می دم روی یک دیتابیس تایم بزارم.
نظر خودم روی graph ها هستش مخصوصا Dgraph … ولی گفتم از دوستان که تجربه کار با graph دیتابیس ها رو دارن یک نظر خواهی بکنم .

1 پسندیده

دلیل منطقی برای prototype سریع از database بدون schema استفاده کنید من یک کم تجربه با Neo4j دارم

خب بسیار هم عالی به نظرتون برای یک شبکه اجتماعی استفاده از graph دیتابیس انتخاب خوبی هستش ؟؟؟
یک سری داده های هست که ارتباطی نیست و صرفا یک table پستگرس رو فرض کنید که هیچ relation با هیچ تیبل دیگه ای نداره و یا داده های مرتبط با چت بین کاربران و از قبیل داده… آیا به نظرتون این دست از داده ها رو هم می شه روی graph دیتابیس برد و استفاده کرد ؟

1 پسندیده

بله خیلی query هارو ساده میکنه در این نوع برنامه
به نظره من همه چیزو نبر تو Graph ولی

و قبل شروع بد نیست یک کتاب یا tutorial درمورد گراف database ببینی که با قدرت و ضعف آشنا بشی من همیشه این کارو میکنم قبل از کار با technology جدید

1 پسندیده

تو فاز اول پروژه این وسواس به خرج دادن و فک کردن به scaling و flexibility.فقط هزینه زمانی و انرژی رو افزایش میده . .

اینم میتونید نگاه بندازید :
https://arangodb.com/
نسبتا جدیده . مالتی مدل هست (گراف . جیسون .key-value) … ما هم قصد داریم رو پروژه جدیدمون امتحانش کنیم …

فیس بوک امتحانشو پس داده تو گراف بیس ها … بهترین انتخاب برای ریلیشن های خیلی پیچیده و یا بی ساختاره … از لحاظ انعطاف پذیری… ولی یه DB Admin یا بهتره بگیم تیمی از ادمین ها لازم داره … موقع scaling … و به این راحتی نیست

1 پسندیده

@amirkheirabadi برای این موضوع به نتیجه ای رسیدید یا نه؟