PDA

View Full Version : جداسازی دیتابیس و جداول در پروژه های بزرگ



nafasak
جمعه 14 بهمن 1390, 19:04 عصر
خیلی خیلی ممنون..
یه سوال کوچیک در رابطه با جداسازی....:
وقتی پروژه دارای بخشهای مختلفی است. مثلا 7 به بالا. (با فرض بزرگ بودن و کاربر بالا داشتن....) و هر بخش شامل جداول زیادیست(حداقل 15 الی 20) و ممکنه هر چند وقت با افزوده شدن امکانات به اون بخش جداول و spهای بیشتری هم اضافه بشه... من اینطور تصمیم گرفتم که برای هر بخش یک دیتابیس مجزا داشته باشم.
1- دیتابیس اصلی مخصوص ثبت نام کاربران و اطلاعات حیاتیشون
2- دیتابیس بخش 1
3- دیتابیس بخش 2
.
.
.
4- دیتابیس بخش N
5- دیتابیس تبلیغات و اسپانسرها و کارهای مالی و از این قبیل ....
6- دیتابیس لاگها
7- ...

آیا این کار درسته؟ (با توجه به بزرگ بودن و داشتن کاربران زیاد....)

in_chand_nafar
جمعه 14 بهمن 1390, 20:16 عصر
دویست عزیز با انجام این کار در واقع دارید قدرات SQL Server را زیر سوال می برید
اگر شما این کار را انجام دهید دردسرهای زیادی هنگام یکپارچه کردن ، ایجاد Distribute Query و... خواهید داشت
بهتر که شما
1- یک بانک اطلاعاتی درست کنید
2- از Data Partitioning برای داده های موجود در جداول استفاده کنید
3- سراغ File Group بروید و جداول هر قسمت را داخل File Groupهای مجزا قرار دهید و یا جداولی که کاربران زیاد با اون سرئ کار دارند داخل فایل گروه های مجاز قرار دهید
4- فیلدهای باینری را داخل File Groupهای مجزا قرار دهید
5- از ایندکس ها به خوبی استفاده کنید
6- هنگام استفاده از File Group حتما یادت باشه که اگر می خواهی نهایت سرعت را جواب بکیری باید اونها را داخل Diskهای جدا بگذاری وگرنه IO بالانس نخواهد شد
7- از RAID مناسب استفاده کنی
8-اگر بودجه و پول دارید حتما از هاردهای SSD استفاده کنید

----
در ضمن اگر SQL 2012 (ان شاا... طبق وعده اسفند داره میاد) سراغ Column Stored Index برید واقعا تاثیر گذار است روی سرعت
---
اصلا ببینم چقدر کاربر داری خیلی زباد یعنی چه عدد رو بگو همزمان چقدر کاربر داری
سیستم خودت رو دقیق تر توضیح بده
وا... ما یه عمره داریم دیتا بیس کار می کنیم بزرگترین بانکی که داریم نزدیک به یک ترابایت حجمش است تازه اون هم روی SQL 2000 سرویس پک 4 اون هم پر از دیتا باینری و... با ایندکس مناسب و فایل گروه , RAID همزمان داره به حدود 400 کاربر(فقط کارشون انفجار بانک به معنی واقعی است. درج و واکشی داده باینری و...) سرویس می ده
بعلت بدهی بالا کارفرما هنوز که هنوز به 2008 و 2005 نبردیمشون تا مایه عبرت بشه (دور بودن از تکنولوژی روز براشون خوبه)
عزیز جان SQL خصوصا نسخه های جدید را دست کم نگیر یه سر به اینجا بزن
http://tpc.org/tpce/results/tpce_perf_results.asp

در ضمن اگر در یحث Database Tuning کمک خواستید در خدمت هستم

nafasak
جمعه 14 بهمن 1390, 22:13 عصر
بله 400 تا کاربر همزمان درست، ولی من به چیزی شبیه FaceBook فکر میکنم، نمیدونم دقیقا کاربر همزمانش میانگین چقدره، ولی فکر کنم حداقل 100میلیونی بشه... نمیدونم... حالا بگیم 70میلیون... شاید بیشتر..

آیا با این توضیحاتی که دادید(که صد البته بسیار بسیار ممنونم)... میشه با یه همچین حجمی حتی بالاتر با یک دیتابیس جوابگو بود؟
یک سوال دیگه هم برام بوجود اومد:! در مورد فیلدهای باینری... آیا فایل های عکس رو بهتر باینری ذخیره کنیم یا بروی هارد ذخیره کنیم و آدرس رو در دیتابیس نگه داریم؟

in_chand_nafar
جمعه 14 بهمن 1390, 22:18 عصر
خوب دیگه
عکس توی 2008 به بالا اگر تعداد رکوردها زیاد و .... FileStream و توی 2012 یه قابلیت جدید به نام FileTable است
اما برای پروژه شما Haddop یه چیز جالب و کار راه انداز است
http://barnamenevis.org/showthread.php?325866-%D8%AA%D9%82%D8%B3%DB%8C%D9%85-%D8%A8%D8%A7%D8%B1-%D8%A8%D8%B1%D9%88%DB%8C-%D8%B3%D8%B1%D9%88%D8%B1-%D9%87%D8%A7%DB%8C-%D9%85%D8%AE%D8%AA%D9%84%D9%81
موفق باشید

Galawij
جمعه 14 بهمن 1390, 22:20 عصر
سلام،
من هم قبلاً در این پست (http://barnamenevis.org/showthread.php?266087-%D8%A7%D8%B1%D8%AA%D8%A8%D8%A7%D8%B7-%D8%A8%DB%8C%D9%86-%D8%AF%D9%88-Database)همچین سوالی داشتم، به این نتیجه رسیدم که فقط روی یک بانک مجتمع پیاده سازی بشه.
مواردی که بهش اشاره شد، موارد کاربردی و خوبی هستند. شما حتماً در انتخاب SQL هم دقت کنید که بعداً دچار مشکل نشید(حداقل 2008).