بروز خطا
[message]
اشتراک در سوال
رای ها
[dataList]
پرسش و پاسخ
online And offline database
مدیریت گفتگو
آخرین تغییر: 10 سال پیش
با سلام
همین طور که از نام سوال مشخصه می خوام دیتابیس داخلی اندروید رو با دیتابیس mySql سایت sync کنم.
یعنی یک دیتا بیس لوکال رو گوشی دارم که اطلاعات ورودی از کاربر رو ذخیره می کنه حالا هر وقت کاربر خواست sync بشه باید اطلاعات از دیتابیس داخلی به سرور منتقل بشه و در mySql سایت ذخیره بشه و اگه دیتابس سایت اطلاعاتی داره که تو دیتابیس گوشی نیست به دیتابیس گوشی اضافه کنه.
راهی که به ذهن خودم می رسه اینه که دیتایی که کاربر در موقع افلاین ذخیره می کنه رو مشخص کنم و موقع sync شدن این دیتا رو به سمت سرور سایت پاس بدم. و بعد از انتقال کامل اطلاعات به سمت سایت این بار از سایت کل اطلاعات دیتابیس رو بگیرم و دیتابیس داخلی رو یکبار حذف کنم و با اطلاعات دریافتی دوباره پرش کنم.
این الگوریتم درسته؟ اگه تعداد رکوردهام زیاد باشه مشکلی نمی خورم(منظور سرعته) ؟
کتابخونه ای برای اینکار وجود داره؟
پیشاپیش از توجه همه دوستان تشکر می کنم.
پاسخها 2
سوالم رو جور دیگه مطرح می کنم:
من یک دیتابیس انلاین دارم که رو سرورم قرار داره. می خوام کاربر علاوه بر اینکه دیتا رو از دیتابیس انلاین مشاهده، ویرایش و اضافه می کنه بتونه همین عملیات رو به صورت افلاین هم انجام بده . فقط در حالت افلاین باید در اولین فرصتی که انلاین می شه، اطلاعات موجود در گوشی با دیتا بیس روی سرور ادغام بشه یعنی اگه کاربر اطلاعاتی رو در حالت افلاین اضافه کرده به دیتابیس سرور هم اضافه بشه.
نظرات
دیتابیس آنلاین شما قرار برای تمامی کاربرانی که دارین یکی باشه و کاربران فقط اطلاعات یک جدول رو ویرایش میکنن یا هر کاربر بسته به Id خودش یک جدول داره و اون رو ویرایش میکنه
چند تا جدول دارم که هر کاربر می تونه به همش دسترسی داشته باشه و اونا رو ویرایش کنه یا بهش اضافه کنه.
این که کل دیتا ها رو پاک کنید و دوباره پر کنید کاملا غلطه ، به نظر میتونید یه ستون توی جدولتون بذارید که در اون آفلاین یا آنلاین بودن به اضافه یک شمارنده مشخص بشه مثلا برای حالت آفلاین off1-off2 -off3 , ... بشه و برای حالت آنلاین هم on1 , ...باشه ، و با اضافه شدن هر ردیف بسته به حالت آفلاین یا انلاین یکی به مقدار مورد نظر اضافه بشه ،
در مرحله بعد با هر بار آنلاین شدن برنامه آخرین مقدار off , on رو مقایسه کنید با آخرین مقداری که در جدولها هست اگه مساوی بودن که هیچ اگه مساوی نبودن مقادیری که جدیدا اضافه شده به جدول دیگه اضافه بشه
البته این ایده ای بود که به ذهنم رسید باید یکم روش کار کرد
خیلی ممنون کمال عزیز. درضورتیکه کاربر فقط به جدول رکورد اضافه کنه، چیزی که شما میگی درسته اما اگه اطلاعات ویرایش شده باشه دیگه نمیشه با این الگوریتم دیتا رو بروز کرد.
برای ویرایش کردن هم میتونید یه ستون اضافه کنید و مثل بالا اگه رکوردی ویرایش شده باشه اون رکورد رو اپدیت کنه ولی این نکته رو باید در نظر بگیرید که پس از اپدیت مقادیر این ستون رو خالی کنید ، در واقع همه مقادیر این ستون خالی هست و وقتی ردیفی ویرایش میشه مثلا مقدارش true میشه و با هر بار انلاین شدن همه true ها باید آپدیت و سپس false بشن.
برای ویرایش کردن هم میتونید یه ستون اضافه کنید و مثل بالا اگه رکوردی ویرایش شده باشه اون رکورد رو اپدیت کنه ولی این نکته رو باید در نظر بگیرید که پس از اپدیت مقادیر این ستون رو خالی کنید ، در واقع همه مقادیر این ستون خالی هست و وقتی ردیفی ویرایش میشه مثلا مقدارش true میشه و با هر بار انلاین شدن همه true ها باید آپدیت و سپس false بشن.
کِی ستون رو خالی کنم؟ من چند تا کاربر دارم که باید دیتابیس همه اونا اپدیت بشه. و اگر بعد از آپدیت ستون رو خالی کنم کاربرای دیگه تغییرات براشون اعمال نمیشه.
سلام ٬ شما راجع به mysql replication سرچ کن ٬ اینکارو که می خواید انجام بدید با استفاده از این به طور ساده امکانپذیره ٬ البته من خودم تا حالا اینکار نکردم که بخوام بیشتر واستون توضیح بدم.
نظرات
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .
ویرایش
پیام
نظرات