ورود

View Full Version : تحلیل نحوه آرشیو کردن اطلاعات



maktab
یک شنبه 24 اردیبهشت 1391, 20:41 عصر
سلام

من میخوام برای اطلاعات جدولم آرشیو داشته باشم. مثلا آرشیو پیام ها، آرشیو نامه ها - که سالی یک بار است - و... حالا باتوجه به مطالبی که در این سایت خوندم چندین روش وجود داره:
ساخت یک جدول و قرار دادن فیلد آرشیو (مثلا سال) و استفاده از index و دیگر امکانات
ساخت دو جدول، یکی برای اطلاعات غیر آرشیو و یکی برای آرشیو
ساخت دیتابیس جدا

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

baktash.n81@gmail.com
دوشنبه 25 اردیبهشت 1391, 08:54 صبح
سلام

راستش به این سادگی ها هم نیست ... یعنی نمی شه یه فرمول نوشت که برای همه بانکها جواب بده ... اگه اینجوری بود که طراحهای بانکهای اطلاعاتی باید می رفتن سراغ یه شغل شریف دیگه ... ( هر چند که فعلا هم ظاهرا باید همین کارو بکنن مثلا برن برنامه نویسی یاد بگیرن ... ) برخی از عواملی که ممکنه روی تصمیم گیری تاثیر داشته باشه ایناست

1- برنامه تحت وب است با تحت ویندوز
2- برای چه سایز سازمانهایی طراحی می شه قدرت سخت افزار هایی که برای برنامه ممکنه مورد استفاده قرار بگیره ( مثلا اگه برای سوپر مارکت ها طراحی می شه نمی شه توقع داشت که یه سرور غول برای نرم افزار در نظر بگیرن )
3- میزان اهمیت دسترسی به اطلاعات چه قدر هست ... ( مثلا اومدیم و نامه ها رو آرشیو کردیم آیا امکان داره کاربر بخواد نامه آرشیو شده رو دوبار به گردش بندازه .. ؟ جقدر اینکارو ممکنه انجام بده)
4- میزان ورود اطلاعات تو برنامه بیشتر یا میزان بازیابی اطلاعات ... و زمان انجام هر کدوم چقدر اهمیت داره ... مثلا ممکنه کاربر بتونه برای جستجو یه نامه چند ثانیه صبر کنه ... اما برای عمل درج اطلاعات نتونه صبر کنه یا بلعکس
5- میزان ارتباط جدول نامه ها با سایر جداول ... یعنی اکه یه نامه رو آرشیو کنیم پیوست ها و گردش ها که ممکنه در جداول دیگه باشه رو چی کار کنیم ...
6- تا چه میزان پیچیدگی در طراحی و بالا بردن زمان تولید نرم افزار منطقی می باشد.
7- سادگی در نگهداری بعدی مهم است یا خیر ... مثلا کاربران نهایی یا سازمانها باید متخصص IT داشته باشن ؟؟؟ یا یه کاربر ساده هم می تونه از سیستم نگهداری کنه ...

واقعا شاید بشه ده ها فاکتور دیگه هم ذکر کرد اما نکته ایی که وجود داره برای تولید نرم افزارهایی که امروزه تو کشور ما استفاده می شه ... مثلا برای اتوماسیون های اداری احتیاج به این کار نیست یه طراحی درست در کنار استفاده از Index و File Group و Partition ها می تونه تا سالها جوابگوی نیاز سازمان ها باشه ... هر چند که خیلی از شرکت های صاحب نام هم که هزاران مشتری در سراسر کشور دارند این مسائل ابتدایی رو در نظر نگرفتن ...

maktab
دوشنبه 25 اردیبهشت 1391, 12:58 عصر
ممنون.
ولی در یک جدول تا چه میزان اطلاعات میشه نگه داشت (رکورد)؟ یعنی اگر به آن اندازه رسیده بهتره اطلاعاتی که زیاد بشون نیاز نداریم را در جدول دیگه قرار داد.

baktash.n81@gmail.com
دوشنبه 25 اردیبهشت 1391, 14:41 عصر
در واقع محدودیتی وجود نداره ... بسته به میزان فضای هارددیسک می تونید رکورد داشته باشید ... به این لینک یه نگاهی بکنید در مورد ماکسیممهای SQL Server 2012 هست ... (http://msdn.microsoft.com/en-us/library/ms143432.aspx)

یا برای این کلمات جستجو کن ...
Maximum Capacity Specifications for SQL Server

mahan.2002
دوشنبه 25 اردیبهشت 1391, 16:28 عصر
سلام
از نظر من روش دو روش بهتری هست چون اولا اگر اطلاعات روی یک جدول باشه یعنی اطلاعات آرشیوی وو اطلاعات غیر ارشیوی هم روی یک جدول زمانی که ما روی یک جدول به صورت روتین join میخواهیم بزنیم . هزینه join بالا میره و سرعت در نتیجه کاهش و کارایی برانامه کم میشه . در مورد ساخت دیتابیس جدا هم که برای گزارش گیری شاید به راحتی قبل نتونید گزارش بگرید و اگر دیتا بیس از دوم وجود نداشته باشه برنامتون باز مشکل دار بشه ولی اگر می بینید میخواهید این اطلاعات جابه جا کنید بدون وابستگی به اطلاعات جدید خب شاید روش خوب باشه .. ولی در کل روش اول بنظرم بهینه تر هست.
موفق باشید.

maktab
دوشنبه 25 اردیبهشت 1391, 19:51 عصر
اگر منابع فارسی دارید معرفی کنید که بیشتر متوجه بشم چه زمانی بهتره از File Group و Partition استفاده کنم.

مثلا برای یک بانک که همزمان 100 کاربر داشته باشه و در بیشترین جدول آن سالی حدود 40000 رکورد ثبت میشه نیاز هست از این امکانات استفاده کرد یا فقط اینکس کردن مناسب کافیه؟ استفاده از این روش ها در یک هارد معنی داره؟
کتاب خاصی هست که بیشتر این چیزا را تحلیل کرده باشه؟ (فارسی)

mahan.2002
سه شنبه 26 اردیبهشت 1391, 02:56 صبح
برای اطلاع دوستان تا جایی که اطلاع دارم Partition برای زمانی که استفاده که مثلا میخواهیم اطلاعات یک جدول رو هارد های دیگه قرار بدیم از این روش استفاده میکنیم..و موارد استفاده اونم برای جداول بسیار بزرگه .. نه برای ده هزار رکورد یا 100 هزار رکورد که ممکنه 500 مگ یا رکورد های میلیونی که 3 4 .. 7 گیگ به بالا فضا میگرند..
لینک (http://translate.google.com/translate?hl=fa&sl=en&u=http://databases.about.com/od/sqlserver/a/partitioning.htm&ei=dIaxT9L2FIKDhQfTxZTgDg&sa=X&oi=translate&ct=result&resnum=5&ved=0CEYQ7gEwBA&prev=/search%3Fq%3DPartition%2Bsql%26hl%3Dfa%26gbv%3D2%2 6biw%3D1366%26bih%3D643%26prmd%3Dimvns)

esteghamat
چهارشنبه 27 اردیبهشت 1391, 10:51 صبح
سلام
ببين آرشيوكردن نامه ها و .... حقيقتش يك متد قديميه و الان خيلي مفهمومي نداره. قبلا برنامه هاي دبيرخونه تحت داسو يا ويندوزي قديمي براي مديريت اطلاعاتو مشكل با حجم و ... از اين روش استفاده مي كردن. شما مي تونيد براي بررسي اين نظر، سيستم‌هاي جديد از شركت‌هاي معتبر رو يه مرور كنين. ديگه چنين مفاهيمي ندارن.
پس به نظر من اول واقعا ببين دليل آرشيو كردنت چيه؟
- اگر دليلت حجم و تعداده : ببين توي اين حجم و تعداد ركورد اينها ... اصلا جاي گفتنش نيست كه sql تا چه حجمي جواب مي ده . قطعا جواب مي ده.
- اگر دليلت سرعت و performance بالاتره، ي توني جور ديگه اي حلش كني و طراحي تو بازنگري كني. مثلا متن نامه ها از headr اونها جداباشه ، از header يا مشخصات نامه به متن اون يك كليد مستقيم داري كه اون هم توي جدولش ايندكس داره و .... .
در هر صورت اول دليلت رو و الزام اونو مرور كن.
موفق باشي.