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

در مورد یک سیستم وبلاگ دهی از نظر شخص بنده RDBMS انتخاب درست تری می باشد. اما چرا nosql مناسب نیست؟
از اون جهت که شما ناچار هستید به ذخیره چندباره (یا نوبتی) اطلاعات و بازخوانی چندباره اون،(دقیقا به دلیل فقدان A در تصویر فوق) یا به زبان خودمانیش چون در حالت nosql از جیزی با مفهوم join (در sql) خبری نیست.
به این ترتیب پهنه دیتابیس شما خیلی وسیع تر از حالت RDBMS خواهد شد. حجم کدهای شما نیز طبیعتا بیشتر خواهد شد. در خصوص پرفرمنس هم چندان نباید خوش بین باشید چون با این وضعیت در صورت بالا بردن اون ریسک از دست رفتن دیتا در nosql نیز بالاتر خواهد رفت (اگر دلیلش را نمی دانید در خصوصش قبل از سوال در اینجا سرچ کنید).
لازم به اشاره است که سیستم وبلاگ دهی شامل فضاهای نسبتا جدای اطلاعاتی است (شبیه انجمن یک سامانه مشترک نیست). مقصود من پست ها، کامنت ها و این موارد برای هر وبلاگ است. حتی شما میتونید هر وبلاگ را تبدیل به یک دیتابیس جدا کنید و به لطف RDBMS کوئری هایی فرا دیتابیسی داشته باشید !
به طور مثال شما قطعا برای دانستن آمار کل تعداد پست ها قرار نیست برید تک تک تیبل های وبلاگها رو آنالیز کنید و جمع بزنید بیاید بخونید.و این اطلاعات رو دارید از تیبل آمار کلی سایت بلاگ دهی می خونید. تا اینجا مشکل نیست. همین کیس را در nosql تصور کنید و بخواهید این آمار در وبلاگ ها نمایش داده شود.
به زبان دیگر،زمانی که شما صدها بار ناچارید چندین فایل را باز کنید برای خواندن یک اطلاعات بهتر نیست این اطلاعات در یک محل باشند یا حداقل به هم ریلیت باشند با قابلیت جوین ؟ قطعا پاسخ شما مثبت است و اینجاست که بنده RDBMS را به nosql در این پروژه ترجیح می دهم. چه از نظر کدنویسی چه پرفرمنس نتیجه مطلوب تری دارد.