نمایش نتایج 1 تا 10 از 10

نام تاپیک: جلوگیری از پاک شدن اطلاعات در هنگام قطع برق

  1. #1
    کاربر دائمی آواتار unique1984
    تاریخ عضویت
    دی 1384
    محل زندگی
    Newjef Land
    سن
    39
    پست
    221

    Question جلوگیری از پاک شدن اطلاعات در هنگام قطع برق

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

  2. #2
    کاربر دائمی آواتار FastCode
    تاریخ عضویت
    تیر 1388
    محل زندگی
    /dev/null
    پست
    3,486

    نقل قول: جلوگیری از پاک شدن اطلاعات در هنگام قطع برق

    راهکار دیتابیسی ای که برای این کار وجود داره اینه که وقتی کاربر داره اطلاعات رو وارد میکنه شما اونها رو در دیتابیس ذخیره کنید و وقتی درخواست ثبت اطلاعات و داد فقط یک flag رو که نشون دهنده ثبت شدن اطلاعات هست رو عوض کنید.
    مثلاً فکر کنید این یک کالا در یک فاکتور:
    ID
    Factor_Frosh_ID
    Kala_ID
    U_User_ID
    Count
    Price
    Percent
    Commited*
    وقتی کاربر اطلاعات رو در برنامه وارد میکنه شما سطر ها رو در بانک وارد کنید و فقط ستون آخر رو که باید bit/bool باشیه رو 0 بزارید.
    وقتی کاربر اطلاعات رو تایید کرد 0 ها رو بکنید 1.
    وقتی بکاربر login میکنه, برنامه بین تمام اطلاعات وارد شده توسط کاربر(این کار رو احتمالاً باید برای همه/چند تا از table ها انجام بدید.) جست و جو کنه و سطرهایی رو که مشکل دارند رو در فرم مربوطشون باز کنه و از کاربر بخواد که ثبت اطلاعات رو تموم کنه.

    نوشتنش زمان میبره ولی مسیر مشخصه و اگر چیزهایی رو که میخواهید خودتون روی کاغذ ببرید و دقیق روش کار کنید میتونید بدون مشکل یک برنامه خوب بنویسید.
    آخرین ویرایش به وسیله FastCode : سه شنبه 19 بهمن 1389 در 14:02 عصر دلیل: جمله جا افتاده.

  3. #3
    کاربر تازه وارد
    تاریخ عضویت
    فروردین 1389
    محل زندگی
    T
    پست
    67

    نقل قول: جلوگیری از پاک شدن اطلاعات در هنگام قطع برق

    دوست عزیز سلام:
    در تکمیل حرف های دوستمون"fastcode" می تونید اطلاعات را به صورت local مثلا در یک سند xml ذخیره کنید تا هم بار روی سرور database کمتر بشه و هم مدیریتش راحتر باشه.هر وقت هم که کاربر خواست login کنه xml و چک کن اگر توش data بود اون وقت فرم با این اطلاعات پر کن.

  4. #4

    نقل قول: جلوگیری از پاک شدن اطلاعات در هنگام قطع برق

    سلام
    بنظر من روش دومی که ارائه شد بهتره
    چون در روش اول سربار اطلاعاتن روی دیتا بیس زیاده و ممکنه اطلاعات اضافی زیادی روش
    ذخیره بشه که اصلا نیاز نیستن و همیشه کاربر باید اطلاعات اضافی رو پاک بکنه که کار کاربر هم زیاد میشه.
    اگه توجه کرده باشید برنامه های office هم از سیستم فایل برای ذخیره موقتی اطلاعات استفاده میکنه

  5. #5
    کاربر دائمی
    تاریخ عضویت
    مهر 1387
    محل زندگی
    تهران
    سن
    34
    پست
    608

    نقل قول: جلوگیری از پاک شدن اطلاعات در هنگام قطع برق

    سلام. دوست عزیز بنظر منم روش دوم (استفاده از فایل XML) بهتر از روش اول هستش. روش اول اصلا منطقی نیست. بازم ممکنه روش های دیگه ای هم وجود داشته باشه.

  6. #6
    کاربر دائمی آواتار FastCode
    تاریخ عضویت
    تیر 1388
    محل زندگی
    /dev/null
    پست
    3,486

    نقل قول: جلوگیری از پاک شدن اطلاعات در هنگام قطع برق

    متاسفانه روش اول بهتره.چون فایلهای xml اگر قرار باشه اتفاقی براشون بیافته ۱۰۰٪ پاک میشن.ولی دیتابیسهای SQL خیلی بیشتر روشون کار شده تا failsafe باشن و البته از Disk Cache استفاده نمیکنن.

    یه سوال دیگه؟
    شما منظورتون از بار روی سرور چیه؟
    همین مثال رو با هم حل میکنیم:
    تا اونحایی که یادمه یک سطر داده توی این جدول ۷۲ بایته و اگر اون فیلد آخر اضافه بشه یک بایت اضافه میشه.
    ولی در حالت xml
    اتفاقی که میافته اینه که شما هر دفعه یک فایل xml چند کیلوبایتی رو از اول مینویسی.
    آخرین ویرایش به وسیله FastCode : سه شنبه 19 بهمن 1389 در 23:04 عصر

  7. #7

    نقل قول: جلوگیری از پاک شدن اطلاعات در هنگام قطع برق

    منظور از بار اون تک فیلد نیست.
    بلکه منظور بار پردازشی و اطلاعاتی که دیتا بیس باید بازای هربار ویرایش قبل از ثبت کاربر متحمل بشه
    و این مسئله این ایدرو دچار اشکال میکنه.
    و همچنین فرض کنین که برق رفت اطلاعات هم در دیتابیس ذخیره شده بود
    دوباره بعد از راه اندازی مجدد برنامه. باید کل جدولهای دیتابیس بخاطر اطلاعات ثبت نشده وارسی بشه
    در صورتی که با استفاده از فایل براحی اطلاعات ناقص قابل مشاهده هستند و در ضمن
    روش دیتا بیسی فقط در مورد برنامه هایی میتونه کاربرد داشته باشه که خودشون از DB دارن استفاده میکنن
    و نمیتونه روش مستقل و جامعی باشه.
    هرچند برای این پروژخ کاربرد داره.

  8. #8
    کاربر تازه وارد
    تاریخ عضویت
    فروردین 1389
    محل زندگی
    T
    پست
    67

    نقل قول: جلوگیری از پاک شدن اطلاعات در هنگام قطع برق

    دوستان سلام:
    بار بیشتر بر روی سرور به معنی اطلاعات بیشتر بر روی پایگاه نیست شما اگر از sql2005 هم استفاده کرده باشید می تونید میلیون ها رکورد رو بدون افت عملکرد ثبت و باز یابی کنید.منظور از بار بر روی سرور همنطور که دوستمون shuriken گفت بار پردازشی هست که سرور برای انجام اعمال ثبت یا بازخوانی مجبور به انجام اون هست.برای روشن تر شدن مطلب از خود C#‎ مثال می زنم.یکی از اهداف ساخت dataset در C#‎ کم کردن بار بر روی سرور هست.C#‎ با ایجاد یه پایگاه داده ی local سعی میکنه انتقال اطلاعات رو تا وقتی که داده ها به حجم قابل قبولی (یا به مرحله قابل اطمینان)نرسیده به صورت local نگهداری کنه و بعد به یکباره اطلاعات رو برای سرور database بفرسته.این مسئله وقتی اهمیت بیشتر پیدا می کنه که سرور شما بر روی شبکه باشه در این صورت با پر کردن هر فیلد نیاز به بر قراری ارتباط با سرور هست که این مسئله بار بر روی (به معنی حجم اطلاعات رد و بدل شده ) شبکه رو هم بیشتر میکنه.
    در مورد xml یا کلا فایل ها شما می تونید اطمینان کاملی بهشون داشته باشی این اطلاعات بر روی هارد شما قرار می گیرند و با قطع برق هیچ صدمه ای بهشون وارد نمیشه و اگر قرار باشه هارد با مشکل روبرو بشه هاردی که database بر روی اون قرار داره هم ممکنه با مشکل روبرو بشه و اگر backup از دیتا بیس نباشه اطلاعات sql هم از بین می ره.
    در اخر هم تغییر database یک برنامه باعث تغییر در تمام قسمت های برنامه میشه ولی خواندن نوشتن روی سند xml می تونه تو یه کلاس جدا بدون تغییر در قسمت های دیگه ی برنامه انجام بشه.
    آخرین ویرایش به وسیله saeidi.yusuf : چهارشنبه 20 بهمن 1389 در 09:38 صبح

  9. #9
    کاربر دائمی
    تاریخ عضویت
    مهر 1387
    محل زندگی
    تهران
    سن
    34
    پست
    608

    نقل قول: جلوگیری از پاک شدن اطلاعات در هنگام قطع برق

    سلام.

    اتفاقی که میافته اینه که شما هر دفعه یک فایل xml چند کیلوبایتی رو از اول مینویسی.
    رفیق با کامپیوترهای امروزی دیگه بحث، بحث ترابایت هستش. کامپیوترهای امروزی یه فایل چند کیلوبایتی رو زودتر از اینکه یه عصب بخواد اطلاعاتی رو به مغز برسونه ذخیره می کنن.

  10. #10
    کاربر دائمی آواتار FastCode
    تاریخ عضویت
    تیر 1388
    محل زندگی
    /dev/null
    پست
    3,486

    نقل قول: جلوگیری از پاک شدن اطلاعات در هنگام قطع برق

    مثل اینکه منظورم رو درست متوجه نشدید.
    ۱.
    بار پردازشی ای در DB وجود نداره چون عملاْ شما از مقدار درون اون فیلد هیچ استفاده خاصی نمیکنی.
    بار پردازشی در XML تا چند هزار برابر بیشتره.برای کسب اطلاعات بیشتر یه ASMXML مراجعه کنید.

    ۲.
    مشکل این نیست که فایل چقدر طول میکشه که ذخیره بشه مشکل اینه که کی ذخیره میشه.
    برای تست میتونید از یک ماشین مجازی استفاده کنید.(موقعی که فکر میکنید فایل ذخیره شده برنامه رو ببندید.)
    این مشکل در دیتابیس ها وجود نداره برای اینکه اونها براینوشتن توی فایل از یک فیگی استفاده میکنن که اسمش رو یادم نبیست که به سیستم عامل دستور میده که عملیات نوشتن رو بدون وقفه انجام بده.


    نکته دیگه اینکه چون سیستم عامل ها علاقه دارند فایل ها رو بدون دلیل cache نکنند, فایل XMLشما رو در حافظه نکه نمیدارن که شما بیای سراغش.ولی دیتابیس شما رو خود Database Engine در بهترین حالت ممکن cache میکنه تا هر موقع که خواستید اطلاعاتتون رو بردارید.

    و نکته جدیدتری که یادم اومد اینه که اگر کاربر میخواست از یک سیستم دیگه استفاده کنه باید چکار کنه؟
    و نکته جالبتر اینکه اگر بالایی مشکلش حل شد, توی log برنامه اسم کدوم کاررب رو میخواهید جلوی اون سطر بنویسید؟
    آخرین ویرایش به وسیله FastCode : یک شنبه 15 اسفند 1389 در 17:53 عصر دلیل: غلط املایی + توضیح

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •