View Full Version : سوال: خراب شدن بانک اطلاعاتی در هنگام قطع ناگهانی برق
Mask
شنبه 24 مهر 1389, 16:53 عصر
با سلام
بنده برنامه حسابداری طراحی کردم که چندین مشتری در حال استفاده از آن هستند.
بانک اطلاعاتی این برنامه اکسس هست.
چند وقت یه بار مشتری ها زنگ میزنند و میگویند برنامه بالا نمیاد.
وقتی پیگیر میشم و تحشو در میارم ،میفهمم مشکل از اینجاست که یهو برق رفته یا برق سیستم رو قطع کردند و برنامه حسابداری باز بوده و بانک اطلاعاتی خراب شده.
سوالم از دوستان اینه که :
آیا باید بانک اطلاعاتیم رو عوض کنم.پ؟
آیا راهی هست که همین بانک اکسس رو استفاده کنم واین مشکل هم رفع بشه؟
در ضمن بنا به دلایلی نمیتونم از sql یا بانکهای اطلاعاتی که حتما برای اجرا نیاز به نصب دارند استفاده کنم.
ممنون از جوابتون.
BORHAN TEC
شنبه 24 مهر 1389, 17:28 عصر
پیشنهاد می کنم که اتصال را همیشه باز نگه ندارید و فقط لحظه ای که به بانک نیاز دارید اتصال را برقرار کنید و از آن استفاده کنید. با این کار احتمال خراب شدن بانک به شدت کم می شود.
Mask
شنبه 24 مهر 1389, 17:55 عصر
پیشنهاد می کنم که اتصال را همیشه باز نگه ندارید و فقط لحظه ای که به بانک نیاز دارید اتصال را برقرار کنید و از آن استفاده کنید. با این کار احتمال خراب شدن بانک به شدت کم می شود.
ممنون.
اما فکر نمیکنم منطقی باشه که برا هر اینسرت یا کوئری یا ... آدو کانکشن رو کانکت کنم.
؟؟؟؟؟؟
tdkhakpur
شنبه 24 مهر 1389, 18:27 عصر
تنها راه برای امنیت استفاده از ups هست.
Mask
شنبه 24 مهر 1389, 18:33 عصر
تنها راه برای امنیت استفاده از ups هست.
خیلی ممنون.:لبخندساده:
tdkhakpur
شنبه 24 مهر 1389, 20:10 عصر
خیلی ممنون.:لبخندساده:
واقعا میگم من هم میتونستم پیشنهاد بسته کردن connection ها رو بدم اما این دلیل امنیت نمیشه و هیچ وقت راه قطعی برای این کار وجود نداره که بتوان از طریق نرم افزار جلوشو گرفت.
چند سال قبل یکی از شرکتهای تولید پوشاک داده هاش رو به این طریق از دست داد و حدودا میشه گفت ورشکست میشد. همه بدهکار های بعد از آخرین backup شده بودن بستانکار.
در کل برای جاهای بزرگ خیلی خطر داره.
BORHAN TEC
یک شنبه 25 مهر 1389, 11:49 صبح
واقعا میگم من هم میتونستم پیشنهاد بسته کردن connection ها رو بدم اما این دلیل امنیت نمیشه و هیچ وقت راه قطعی برای این کار وجود نداره که بتوان از طریق نرم افزار جلوشو گرفت.
چند سال قبل یکی از شرکتهای تولید پوشاک داده هاش رو به این طریق از دست داد و حدودا میشه گفت ورشکست میشد. همه بدهکار های بعد از آخرین backup شده بودن بستانکار.
در کل برای جاهای بزرگ خیلی خطر داره.
نمیدونم چقدر نظرم درسته یا غلط؟!!!
من مشکلات این چنینی را با با دیتابیس هایی که با Access ساخته شده اند را چندین بار دیده ام. ولی تا به حال چنین مشکلی را با دیتابیسهایی که با Interbase ساخته شده اند را ندیده ام (در بقیه موارد اطلاعی ندارم). اگر دوستان چنین مشکلی را با Interbase دیده اند گزارش دهند. من فکر می کنم که Access در این زمینه ضعف هایی داشته باشد!!! (دوستان در این رابطه نظر بدهند) :متفکر:
BORHAN TEC
یک شنبه 25 مهر 1389, 11:58 صبح
تنها راه برای امنیت استفاده از ups هست.
به نظر من بهتر است با تحقیقات بیشتر یک راه حل نرم افزاری درست و حسابی را برای این مشکل پیدا کرد. استفاده از UPS بسیار عالی است، اما فرض کنید بنا به هر دلیلی قسمت برق رسانی سیستم (پاور و ...) از کار بیفتد در این شرایط باید چه کرد؟؟؟ باور کنید در ماه قبل در عرض سه روز دو تا پاور سوزوندم که بعداً فهمیدم که مشکل از مادربورد بوده. اگه این سیستم در یک چنین شرکتی به کار گرفته می شد چه حادثه وحشتناکی رخ می داد؟؟!!!
Mask
یک شنبه 25 مهر 1389, 12:08 عصر
نمیدونم چقدر نظرم درسته یا غلط؟!!!
من مشکلات این چنینی را با با دیتابیس هایی که با Access ساخته شده اند را چندین بار دیده ام. ولی تا به حال چنین مشکلی را با دیتابیسهایی که با Interbase ساخته شده اند را ندیده ام (در بقیه موارد اطلاعی ندارم). اگر دوستان چنین مشکلی را با Interbase دیده اند گزارش دهند. من فکر می کنم که Access در این زمینه ضعف هایی داشته باشد!!! (دوستان در این رابطه نظر بدهند) :متفکر:
ممنون.
با سلام
فکر میکنم به دلیل زیر هست
Stored Procedure ها
Crash Recovery سریعتر
nilidelphi
دوشنبه 26 مهر 1389, 12:28 عصر
استفاده از UPS ه به برنامه نویس ربطی نداره؟؟؟؟؟
ولی اگه مشتریتون به داده هاش خیلی علاقه داره استفاده از UPS همچون گفته ی دوست عزیزمون بهترین راهه ولی نرم افزاری نیست.
چون بانک اکسس DBMS نداره نمیشه بازیافتش کرد و حتی یک بک آپ درست حسابی ازش گرفت.
اگه ممکنه از SQL server استفاده کنید چون هم میتونید براحتی بک آپ بگیری (در زمانهیی که انتخاب می کنید)
هم اینکه اگر در هر لحظه ای ارتباط قطح شد و یا برق قطع شد شما با استفاده از فایل LOG که همراه دیتابیستونه با استفاده از میدر بازیافت اس کیو ال آخرین داده های رد و بدل شده رو بازیافت کنید.
موفق باشید.
Mask
دوشنبه 03 آبان 1389, 21:33 عصر
ممنون از دوستان
یه سوال دیگه برام پیش اومده |:
بانک های اطلاعاتی آنتی ویروسها چیه که همیشه در حال استفاده از دیتا بیسشونن و اگه برق هم بره باز دیتا بیسشون خراب نمیشه؟
alinikaein
سه شنبه 04 آبان 1389, 08:48 صبح
ممنون از دوستان
یه سوال دیگه برام پیش اومده |:
بانک های اطلاعاتی آنتی ویروسها چیه که همیشه در حال استفاده از دیتا بیسشونن و اگه برق هم بره باز دیتا بیسشون خراب نمیشه؟
سلام؛
فكر ميكنم اونها چون فقط در حال خوندن هستند و عمل نوشتني انجام نميدهند، مشكلي پيدا نميكنند.
يا علي... موفق باشيد...
Felony
سه شنبه 04 آبان 1389, 08:57 صبح
سلام؛
فكر ميكنم اونها چون فقط در حال خوندن هستند و عمل نوشتني انجام نميدهند، مشكلي پيدا نميكنند.
يا علي... موفق باشيد...
پس آپدیت چیه ؟ عمل نوشتن انجام میدن ولی کمتر از عمل خوندنشون هست .
آنتی ویروس ها با توجه به ثبات عملکرد و طراحی بانکشون مشکلی براشون پیش نمیاد ، یعنی بیشتر اوقات خود گروه سازنده آنتی ویروس براش یه بانک اطلاعاتی طراحی میکنه ، طراحی این بانک به مراتب آسون تر از طراحی پایگاه داده ای مثل Access هست چون فقط با یک نوع داده سر و کار دارن و میدونن تمرکز باید روی یک نوع داده و بهینه سازی اون نوع باشه ، ولی در بانک هایی مثل Access ما با یک نوع داده سر و کار نداریم ، داده ها میتونه از نوع رشته ، عدد ، تاریخ یا حتی فایل باشه و مدریت اونها کار بسیار پیچیده ای میشه ...
Mahmood_M
سه شنبه 04 آبان 1389, 15:17 عصر
چون فقط با یک نوع داده سر و کار دارن و میدونن تمرکز باید روی یک نوع داده و بهینه سازی اون نوع باشه
چیزی که در بانک اطلاعاتی آنتی ویروسها ثبت میشه اطلاعاتی از ویروس هاست که می تونه یک رشته و یا عدد و ... باشه ، درواقع یک Signature که به ویروس خاصی نسبت داده میشه خودش یک مقدار رشته ای هست که می تونه یک Hash Code یا ... باشه ، در کنار این Signature توضیحی یا Description ای در مورد دستور العمل حذف اون و یا مراجل حذف ویروس و مقابله با اون هم در بانک ثبت میشه ، اینها نوع های خاصی نیستند ، همین انواع استانداردی هستن که در همه ی بانکهای اطلاعاتی رایج استفاده میشن ، مثلا اگر اشتباه نکنم آنتی ویروس AVG از بانک اطلاعاتی Firebird و به تازگی هم از MySQL استفاده میکنه ...
اونها هم در معرض این خطرها قرار دارن ، اما مدیریت صحیحی که روی نحوه ی ثبت و حذف اطلاعات دارن می تونه این خطرات رو براشون کاهش بده ، مثلا فرض کنید یک آنتی ویروس در حال آپدیت بانکش هست ، اگر به صورت مستقیم برای هر مثلا رکوردی که میخواد در بانکش ثبت کنه ، ابتدا بانکش رو لود کنه و بعد اطلاعات رو از سرورش بگیره و بعد در بانک قرار بده ، خوب احتمال بروز هر مشکلی در حین انجام این اعمال هست ولی اگر بعد از گرفتن کامل اطلاعات از سرور بخواد اطلاعات رو جایگزین کنه ، هم زمان آپدیت اطلاعات کاهش پیدا میکنه و هم ضریب اشتباه کم میشه ...
شاید برخی از شرکتهای صاحب نام آنتی ویروس ، برای بانک اطلاعاتی خودشون ساختار خاصی رو داشته باشن که شاید محرمانه هم باشه ولی مطمئنا همشون با همین انواع داده ای سرو کار دارن و این خطرات برای اونها هم هست ، اگر راهی بود که این خطرات رو به صفر برسونه ، خوب مطمئنا طراحان مثلا SQL Server هم دنبالش می رفتن ولی چون راه حل نرم افزاری کاملی نیست ، راه حلهایی مثل فایلهای Log و Backup و ... قرار داده شده ...
به نظرم اگه بانکتون رو فقط در مواقع ضروری لود کنید و روی مدیریت بانکتون بیشتر کار کنید ، می تونید احتمال از دست رفتن اطلاعات رو کاهش بدید ...
موفق باشید ...
حمیدرضاصادقیان
سه شنبه 04 آبان 1389, 15:26 عصر
ممنون از دوستان
یه سوال دیگه برام پیش اومده |:
بانک های اطلاعاتی آنتی ویروسها چیه که همیشه در حال استفاده از دیتا بیسشونن و اگه برق هم بره باز دیتا بیسشون خراب نمیشه؟
سلام.بعضی از آنتی ویروسها از فایلها استفاده میکنند و Signature های خود را در فایلهای مختلف قرار میدن و زمانی که آنتی ویروس دنبال ویروس میگرده این فایلها رو با ساختارهای خاصی که دسته بندی میکنند مثلا کدام فایلها مربوط به فایلهای exe کدام مربوط به روتکیتها و... هستند جستجو میکنند. و باز معمولا در همان ها هم دنبال کلیدهایی میگردند که سریعتر به نتیجه برسند.
بعد دیتابیسهای ما که خراب میشه بیشتر به خاطر اینه که عمل خواندن و نوشتن زیاد روی دیتابیس انجام میشه ولی در آنتی ویروس بیشتر عمل خواندن انجام میشه وفقط زمانی که میخواد update بشه عمل نوشتن انجام میشه. زیرا بیشتر خرابی هایی که حداقل من خودم بهش برخوردم در زمان نوشتن اطلاعات روی دیتابیس بود که یا برق رفته یا اتفاقات دیگه افتاده.زمانی که مثلا sql داره اطلاعات رو میخونه از page های موجود در هارد خوانده در ram قرار میدهد و شما اون اطلاعات رو میبینید.ولی زمان نوشتن فایل مورد تغییر قرار میگیره و مستقیما داره PAGE ها رو تغییر میده که اگر این وسط اتفاقی بیافته دیتابیس خراب میشه. معمولا خود sql server روشهایی استفاده میکنه که اگر برق رفت دیتای شما دچار کمترین اسیب دیدگی بشه.
موفق باشید
K.Mohammadreza
سه شنبه 04 آبان 1389, 21:35 عصر
با سلام
من خودم اين مشکل را با بانک Paradoxداشتم ولي ميديدم که در بذنامه هاي حسابداري همچون Rafeh علي زغم استفاده از اين بانک مشکل خاصي ندارند. پس از تحقيق و بررسي کدها با برنامه ديباگرو دي لسمبلر فهميدم که بهترين شيوه براي کار با ديتا ها استفاده از دستورات SQLو حلقه هاي try except است. و از زمانيکه از اين روشها استفاده مي کنم نه تنها سرعت برنامه هام دوچندان شده بلکه تا کنون هيچ مورد خرابي يا مشکل ديتايي نداشتم
Mask
پنج شنبه 13 آبان 1389, 16:17 عصر
حلقه هاي try except
میشه یه نمونه از کد هایی رو که با دستورات مذکور نوشتید اینجا قرار بدید.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.