بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]
پرسش و پاسخ

online And offline database

مدیریت گفتگو
Vahid 10 سال پیش
آخرین تغییر: 10 سال پیش

با سلام
همین طور که از نام سوال مشخصه می خوام دیتابیس داخلی اندروید رو با دیتابیس mySql سایت sync کنم.
یعنی یک دیتا بیس لوکال رو گوشی دارم که اطلاعات ورودی از کاربر رو ذخیره می کنه حالا هر وقت کاربر خواست sync بشه باید اطلاعات از دیتابیس داخلی به سرور منتقل بشه و در mySql سایت ذخیره بشه و اگه دیتابس سایت اطلاعاتی داره که تو دیتابیس گوشی نیست به دیتابیس گوشی اضافه کنه.
راهی که به ذهن خودم می رسه اینه که دیتایی که کاربر در موقع افلاین ذخیره می کنه رو مشخص کنم و موقع sync شدن این دیتا رو به سمت سرور سایت پاس بدم. و بعد از انتقال کامل اطلاعات به سمت سایت این بار از سایت کل اطلاعات دیتابیس رو بگیرم و دیتابیس داخلی رو یکبار حذف کنم و با اطلاعات دریافتی دوباره پرش کنم.


این الگوریتم درسته؟ اگه تعداد رکوردهام زیاد باشه مشکلی نمی خورم(منظور سرعته) ؟
کتابخونه ای برای اینکار وجود داره؟

پیشاپیش از توجه همه دوستان تشکر می کنم.

نظرات

alisherafat01 10 سال پیش
این که کل دیتا ها رو پاک کنید و دوباره پر کنید کاملا غلطه D: بر اساس یه فیلدی که در دیتا بیس لوکال مشخصه الان مقدارش چنده این کار رو بکنید و درخواست بدید به وب سرویس که چیزای جدیدتر از اون فیلد رو براتون بفرسته و شما ذخیره کنید
Vahid 10 سال پیش
اینجوری مشکل دارم چون ممکنه دیتا توسط کاربرای دیگه ویرایش شده باشه. مجبورم همه دیتابیس رو دوباره از سایت بگیرم.
Vahid 10 سال پیش
کسی نظری ندراه؟؟؟ در ضمن لایبرری SqlAssetHelper رو هم دیدم ولی فکر نمی کنم به درد من بخوره.

پاسخ‌ها 2

Vahid 10 سال پیش

سوالم رو جور دیگه مطرح می کنم:

من یک دیتابیس انلاین دارم که رو سرورم قرار داره. می خوام کاربر علاوه بر اینکه دیتا رو از دیتابیس انلاین مشاهده، ویرایش و اضافه می کنه بتونه همین عملیات رو به صورت افلاین هم انجام بده . فقط در حالت افلاین باید در اولین فرصتی که انلاین می شه، اطلاعات موجود در گوشی با دیتا بیس روی سرور ادغام بشه یعنی اگه کاربر اطلاعاتی رو در حالت افلاین اضافه کرده به دیتابیس سرور هم اضافه بشه.

نظرات

HoCoder 10 سال پیش
دیتابیس آنلاین شما قرار برای تمامی کاربرانی که دارین یکی باشه و کاربران فقط اطلاعات یک جدول رو ویرایش میکنن یا هر کاربر بسته به Id خودش یک جدول داره و اون رو ویرایش میکنه
Vahid 10 سال پیش
چند تا جدول دارم که هر کاربر می تونه به همش دسترسی داشته باشه و اونا رو ویرایش کنه یا بهش اضافه کنه.
kamal_hajatmand 10 سال پیش
این که کل دیتا ها رو پاک کنید و دوباره پر کنید کاملا غلطه ، به نظر میتونید یه ستون توی جدولتون بذارید که در اون آفلاین یا آنلاین بودن به اضافه یک شمارنده مشخص بشه مثلا برای حالت آفلاین off1-off2 -off3 , ... بشه و برای حالت آنلاین هم on1 , ...باشه ، و با اضافه شدن هر ردیف بسته به حالت آفلاین یا انلاین یکی به مقدار مورد نظر اضافه بشه ، در مرحله بعد با هر بار آنلاین شدن برنامه آخرین مقدار off , on رو مقایسه کنید با آخرین مقداری که در جدولها هست اگه مساوی بودن که هیچ اگه مساوی نبودن مقادیری که جدیدا اضافه شده به جدول دیگه اضافه بشه البته این ایده ای بود که به ذهنم رسید باید یکم روش کار کرد
Vahid 10 سال پیش
خیلی ممنون کمال عزیز. درضورتیکه کاربر فقط به جدول رکورد اضافه کنه، چیزی که شما میگی درسته اما اگه اطلاعات ویرایش شده باشه دیگه نمیشه با این الگوریتم دیتا رو بروز کرد.
kamal_hajatmand 10 سال پیش
برای ویرایش کردن هم میتونید یه ستون اضافه کنید و مثل بالا اگه رکوردی ویرایش شده باشه اون رکورد رو اپدیت کنه ولی این نکته رو باید در نظر بگیرید که پس از اپدیت مقادیر این ستون رو خالی کنید ، در واقع همه مقادیر این ستون خالی هست و وقتی ردیفی ویرایش میشه مثلا مقدارش true میشه و با هر بار انلاین شدن همه true ها باید آپدیت و سپس false بشن.
kamal_hajatmand 10 سال پیش
برای ویرایش کردن هم میتونید یه ستون اضافه کنید و مثل بالا اگه رکوردی ویرایش شده باشه اون رکورد رو اپدیت کنه ولی این نکته رو باید در نظر بگیرید که پس از اپدیت مقادیر این ستون رو خالی کنید ، در واقع همه مقادیر این ستون خالی هست و وقتی ردیفی ویرایش میشه مثلا مقدارش true میشه و با هر بار انلاین شدن همه true ها باید آپدیت و سپس false بشن.
Vahid 10 سال پیش
کِی ستون رو خالی کنم؟ من چند تا کاربر دارم که باید دیتابیس همه اونا اپدیت بشه. و اگر بعد از آپدیت ستون رو خالی کنم کاربرای دیگه تغییرات براشون اعمال نمیشه.
p3ym4n 10 سال پیش

سلام ٬ شما راجع به mysql replication سرچ کن ٬ اینکارو که می خواید انجام بدید با استفاده از این به طور ساده امکانپذیره ٬ البته من خودم تا حالا اینکار نکردم که بخوام بیشتر واستون توضیح بدم.

نظرات


پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .