0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Category: How to sync android sqlite db with mysql server

Category: How to sync android sqlite db with mysql server

By using our site, you acknowledge that you have read and understand our Cookie PolicyPrivacy Policyand our Terms of Service. The dark mode beta is finally here. Change your preferences any time. Stack Overflow for Teams is a private, secure spot for you and your coworkers to find and share information.

What is the workaround to handle this? This feature can be found in Google Calendar, where you can view the calendar’s events on your mobile, and when you add a new event and Sync the data, you can view the updated data by going to your online account too.

Note: I don’t want to centralize my database online, because I also want to give the mobile users the ability to use the App without internet connection. It shows you how to do synchronization «Android style», which requires no user interaction by manually tapping a sync button all the time. On top of that you need to write server software that is able to provide your SyncAdapter with a «delta» of all changes since the last commit.

The most basic approach is keeping a «last synchronized» time stamp in your app which has to come from the server, otherwise you could get into trouble because of time differences between client and server. Normalize all time stamps as GMT or any timezone of your choice, but stick with that decision. If your app needs to display a time stamp in local time, then you need to use the Java Calendar and TimeZone class for converting the normalized time stamp into local time.

Your app also needs to flag changed local records as «dirty», so your SyncAdapter knows that it needs to upload these changed or new records to the server. You also may want to read through some Google API like Google Calendar for getting an idea of how all of this works and how to design the server API interface for the communication. Learn more. Ask Question. Asked 7 years, 9 months ago. Active 1 year, 11 months ago. Viewed 37k times. StaceyGirl 5, 9 9 gold badges 28 28 silver badges 54 54 bronze badges.

Wassim Taher Wassim Taher 1 1 gold badge 9 9 silver badges 24 24 bronze badges. Write a Webservice and get updated data from the service and update your sqllite database. I’ve used PHP to write a webservice in the past. Active Oldest Votes. Following minimum features are needed for your server software: Update existing record s function Add new record s function Get updated records since last synchronization app provides time stamp Get new records since last synchronization app provides time stamp You also may want to read through some Google API like Google Calendar for getting an idea of how all of this works and how to design the server API interface for the communication.

Perfect answer! Thanks a lot.Skills: Android. See more: android mysql sqlitevisual studio android user inputandroid sms sync mysqlregister android user mysqlsync mysql sqlite database coldfusionmysql sqlite androidmicrosoft outlook sync mysqlvisual studio androidoutlook sync mysqlsync mysql databases outlooksync mysql database diffrenet fieldssync mysql sqlite client serversqlite sync mysqlmysql sqlite sample codesiphone dev sync mysqliphone sqlite sync mysqlvisual studio dynamic user interfacessync mysql iphone.

I can do Sync data with mysql. We will need server information where mysql database. And will need to More. Please visit links below to check my past work, I hope you like it.

Hi, Dear Employer! How are you? I read your description carefully and understand your requirements fully. I am really interested in your project. Sure, I will support free bug fixin More. Hello mateI would like to work for your project. I need to create backend and frontend both code for synching the code.

Hello Sir, i have experience of all three technologies required for this project — sqllite,mysql and mobile apps, so i can do write a function in app which will take the data out of app and send it to mysql server w More. So please contacte me to discuss further details about your project.

The email address is already associated with a Freelancer account. Enter your password below to link accounts:. I have a mobile app which uses SQLite and saves records when people fill their information out.

Looking to make some money? Your email address. Apply for similar jobs. Set your budget and timeframe. Outline your proposal. Get paid for your work. It’s free to sign up and bid on jobs. Awarded to:. Link Accounts. I am a new user I am a returning user. Email address. Username Valid username. I am looking to Hire Work. Username or Email. Password I forgot my password.You could either use both drivers independently or use JPA configured with multiple databases.

how to sync android sqlite db with mysql server

Turn on suggestions. Auto-suggest helps you quickly narrow down your search results by suggesting possible matches as you type. Showing results for. Search instead for. Did you mean:. Copilot Lvl 2. Message 1 of 3. How to sync mysql database and sqlite database on android.

Читайте так же:
Синхронизировать все сообщения с iphone

Hello every body, Sorry if my english is poor i’m a french speaking and l’m new on github. Ok i have android app who execute CRUD operation in mysql database but this data are avaible when a user is online only i want to sync mysql database and sqlite database so that the data is avaible offline. Somebody help me with a snippet code please! Ground Controller Lvl 2. Message 2 of 3. Re: How to sync mysql database and sqlite database on android.

Message 3 of 3. How please? All forum topics Previous Topic Next Topic. New solutions. How To Undo A Commit? How to use Git and GitHub. Your account has been flagged. What can I do for t Contact github organization if there is no contac Not a developer question but regular github user,Posted By Udhay on Apr 6, 78 comments. In most of the Android applications, the data present in the local SQLite database will be synced with remote DB in order to perform statistical operations at the server end, maintain backup of the offline data etc.

You must have knowledge of SQLite before you start creating the application. Have a glance at the below articles which will make you understand much about SQLite.

Insert Data Into a Database using Android, PHP, MySQL, JSON Part 1/2

Otherwise proceed with below tutorial. JSON posted to insertuser. JSON array contains array of Objects. JSON returned by insertuser. Confused on choosing these options? Download 2. Before creating screens, make sure below String resources are added. Add string resources to strings. Layout for ListView which is used in Home screen. Will discuss about it more in the below sections. Create DBController. Java under the package com. It handles DB related operations.

In case, if you still have question discuss it right away. Make sure the IP address has been changed in post method with localhost or IP address of your machine:.

how to sync android sqlite db with mysql server

Create NewUser. When the status code returned by insertuser. Entire project is zipped and is available for download. If you feel this article is helpful and interesting please spread a word about it to your friends and colleagues by sharing the article in Facebook or Twitter.

Tweet Share. You are always welcome to provide your comments and feedback from comment box. Reference Android SQLite [pgwriteforus] [pgfeedback]. Donate us as little as Rs. Once you Join, you will receive Mail containing latest Android Tutorials once a month!!

Prerequisite: You must have knowledge of SQLite before you start creating the application. Donate Donate us as little as Rs.

Payment gateway is enabled and available only for readers from India right now. Search this website. Sponsored Ads.Posted by: admin February 23, Leave a comment. I am developing an android application. I am not able to figure out that what is the most appropriate and standardized way to do so? This will give you a nice layer of abstraction in case you decide to switch from MySQL to something else server side.

You may want to take a look at fyrecloud. It uses the Antlr lex and parse software in order to lex and parse incoming replication events and then to translate the MySQL commands into equivalent SQLite commands. This is great for one-way replication.

Accessing a server via REST is easy enough. However, modifying an existing MySQL installation in order to support serialization presents too many headaches to enumerate here.

Amsler takes advantage of pre-existing replication services. REST also depends upon some polling strategy in order to keep the local device reasonably up-to-date.

Again, many problems with this approach. This is probably going to be helpful: sync databases Mysql SQLite. The real answer is that there is no standard or built in magic way to just copy a MySQL database that lives on a server somewhere to a device. There is no standard way. Depending on your needs you can e. Tags: androiddatabasemysqlsqlsqlite. February 26, Android Leave a comment. Questions: In my layout, I am using falling for predefined values for android:textAppearence.

But, there are, as I found, at least 2 ways to define them, which yields a very different result like, di Questions: I have following custom font family code, and i want to have font weight for that font abc.

Synchronization between Server Database and Local SQLite

How can solve it? Add menu. Nevertheless, good, bad, or ugly, here it is. Take a look and maybe the glove fits. This is probably going to be helpful: sync databases Mysql SQLite The real answer is that there is no standard or built in magic way to just copy a MySQL database that lives on a server somewhere to a device.

Читайте так же:
При синхронизации iphone с outlook нет контактов

Java, runs on Android too. How to define textAppearence value in android layout-Exceptionshub February 26, Android Leave a comment Questions: In my layout, I am using falling for predefined values for android:textAppearence.GitHub is home to over 40 million developers working together to host and review code, manage projects, and build software together.

If nothing happens, download GitHub Desktop and try again.

If nothing happens, download Xcode and try again. If nothing happens, download the GitHub extension for Visual Studio and try again. Automatic data sync when a connection becomes available can create its own issues.

What is needed is a simple and controlled method for performing Bi-Directional Synchronisation. Our priority is our customer therefore do not hesitate to get in touch with us under support ampliapps.

We read every email and every incoming message is given the highest priority. Automatic mobile schema creation if required.

Various platforms supported. Two subsriptions: Paid and Open-Source. Skip to content. Dismiss Join GitHub today GitHub is home to over 40 million developers working together to host and review code, manage projects, and build software together.

Sign up. With this framework your application can work completely offline Airplane Modethen perform an automated Bidirectional Synchronization when an internet connection becomes available. Java Branch: master. Find file. Sign in Sign up. Go back. Launching Xcode If nothing happens, download Xcode and try again. Latest commit.

how to sync android sqlite db with mysql server

Latest commit 2be Feb 24, The time has come for mobile app developers to accept reality. You signed in with another tab or window. Reload to refresh your session.By using our site, you acknowledge that you have read and understand our Cookie PolicyPrivacy Policyand our Terms of Service. The dark mode beta is finally here. Change your preferences any time. Stack Overflow for Teams is a private, secure spot for you and your coworkers to find and share information.

To make it clear, I want to know how syncing between sqlite data and remote mysql works. How can I implement that using Android Studio and Wamp server? Thanks in advance! I guess you can use broadcast receiver inside a service of your android application. If not you can write a service and inside the service you can use a timer to send http request to the server and keep syncing. To get a knowledege about syncing a SQlite database with remote mysql database refer to this tutorial and if you need it to happen without a button press then implement the code in the following tutorial inside a service and remember to use a timer.

I don’t know any way to make a mirror of your mysql database on your android’s sqlite database. There are two ways I can think off when it comes to synchronizing data on your phone. The first one is by using a syncadapter. But this will only pull the data from the server and so you won’t have your synchronization as soon as an update is done.

The second one is by using push notifications. With FCM, firebase cloud messagingor GCM, google cloud messagingyou can tell your server to send a message to every phone that is connected to it. Your phone can then handle the message and synchronize itself with your database.

Obvisouly in either solutions you won’t have a direct access to your database as it brings huge security problems so you’ll need to pass by a web server with an API to connect your application to your database. Here are some useful links about FCMSyncadaptersetc. Learn more. Asked 3 years, 8 months ago. Active 1 year, 7 months ago.

Viewed 17k times. Jagadeesh Kumar Pandari Jagadeesh Kumar Pandari 49 1 1 gold badge 1 1 silver badge 4 4 bronze badges. Active Oldest Votes. Matthieu Meunier Matthieu Meunier 1 1 silver badge 16 16 bronze badges.

How to sync SQLite on Android to MySQL DB?

Sign up or log in Sign up using Google. Sign up using Facebook. Sign up using Email and Password.

Могу ли я синхронизировать много записей из базы данных sqlite с базы данных iphone на базу данных mysql на сервере

В настоящее время я разрабатываю приложение iPhone с базой данных sqlite, эта база данных имеет только одну таблицу со многими записями. И мой сервер использует базу данных MySQL. Я хотел бы спросить:

Могу ли я отправить много записей из базы данных sqlite в базу данных MySQL, чтобы обновить таблицу в базе данных MySQL. Потому что я думаю, что могу сделать обновление только с одной записью. Если у вас есть решение, Пожалуйста, расскажите мне подробно, как я могу это сделать?

Любая помощь будет оценена по достоинству.

1 ответ

  • Как синхронизировать базу данных SQLite на телефоне Android с базой данных MySQL на сервере?

Я разрабатываю приложение android. Я хочу обновить локальную базу данных SQLite с базой данных MySQL на сервере. Я не могу понять, что является наиболее подходящим и стандартизированным способом сделать это?

Читайте так же:
Синхронизация покупки в itunes

Предыстория: я использую базу данных SQLite в своем приложении flex. Размер базы данных составляет 4 MB и имеет 5 таблиц, которые Таблица 1 содержит 2500 записей Таблица 2 содержит 8700 записей Таблица 3 содержит 3000 записей Таблица 4 содержит 5000 записей в таблице 5 содержится 2000 записей.

Как я уверен, вы уже обнаружили, встроенного решения не существует. Там могут быть рамки, чтобы помочь с этим, но я не знаю ни о каких.

Вам лучше всего использовать какую-нибудь хорошо известную кодировку, такую как XML или JSON, для передачи записей на сервер с помощью HTTP POST, и использовать Java, или PHP, или Ruby на Rails, или что вам удобно, чтобы захватить запись и записать ее в базу данных. Конечно, как только вы это сделаете, вам нужно будет рассмотреть вопросы безопасности, по крайней мере, некоторые Черные шляпы напишут простой скрипт perl, чтобы заполнить вашу базу данных до отказа мусором. Вы также должны уметь обрабатывать сбои передачи и дубликаты записей. Это большая работа.

XML синтаксический анализ встроен в iOS. JSON синтаксический анализ может быть добавлен с помощью фреймворка JSON iPhone . Это кусочки головоломки, но еще многое осталось.

Похожие вопросы:

В моем приложении я должен использовать REST API для синхронизации данных между сервером и SQLite DB в приложении. У меня есть одно действие, подобное To-Do, в котором все сообщения To-Do на сервере.

Я разрабатываю приложение iPhone, которое извлекает данные с удаленного сервера MySQL. Поскольку база данных огромна, я не хочу загружать данные каждый раз, когда приложение запускается, а просто.

Приложение, которое я пишу, должно получать информацию из удаленной базы данных, а затем хранить ее в базе данных SQlite на iphone для автономного использования. На данный момент я использую скрипт.

Я разрабатываю приложение android. Я хочу обновить локальную базу данных SQLite с базой данных MySQL на сервере. Я не могу понять, что является наиболее подходящим и стандартизированным способом.

Предыстория: я использую базу данных SQLite в своем приложении flex. Размер базы данных составляет 4 MB и имеет 5 таблиц, которые Таблица 1 содержит 2500 записей Таблица 2 содержит 8700 записей.

Пожалуйста, помогите мне с экспортом базы данных MySQL в базу данных SQLite.

Я разрабатываю приложение android, которое имеет базу данных sqlite. Я хочу перенести данные из базы данных mySql, размещенной на веб-сервере, в базу данных sqlite. Эта передача данных произойдет.

У меня есть две базы данных. Один из них находится на локальном сервере, а другой-на рабочем сервере. Я постоянно работаю на локальном сервере и после утверждения хочу обновить производственный.

Можно ли реплицировать базу данных, когда данные с одинаковым идентификатором присутствуют в одной таблице ? Т. е. когда databsae в моей локальной системе (xampp mysql) проходит через некоторые.

4 Creating Sync Application for Android

The following sections use the simple_sync_android sample project to describe the steps to create an Android application that invokes Oracle Database Mobile Server sync APIs.

This chapter assumes that you know how to use Eclipse to build an Android project and how to appropriately develop and sign an Android application.

4.1 Prerequisites

The following are the prerequisites for enabling synchronization for a SQLite or Berkeley DB Android application:

Install Eclipse IDE with the ADT plug-in, as detailed at the following site:

Install the latest Android SDK, as detailed at the following site:

Install the Mobile Server Development Kit.

4.2 Import the Oracle Database Mobile Server Android Project into Eclipse

Import the Oracle Database Mobile Server simple_sync_android sample Android project into your Eclipse Workspace.

The following steps show how to import the mobile server sample Android project.

In Eclipse, with your Workspace open, select File->Import and choose Existing Projects into Workspace . Click Next .

Figure 4-1 Import Existing Projects into Eclipse Workspace

In the project location point to

Replace <MDK_ROOT> with the full path where Oracle Database Mobile Server Development Kit was installed. In Figure 4-2, for example, it is C:oraclemdk_11g

Figure 4-2 Select Root Directory for Eclipse Project

Click on «Browse…» button which should find the project files. Select the simple_sync_android project and click Finish . The simple_sync_android project is now imported into your Eclipse Workspace.

4.3 Build Oracle Database Mobile Server Android Project

The following steps show how to build Oracle Database Mobile Server Android project:

Since the project references sync classes, in order to build it, you must copy the sync library file (s) to the libs subdirectory of the project.

For Berkeley DB client, copy the contents of <MDK_ROOT>MobileSdkandroidlibbdb to <MDK_ROOT>MobileSdksamplesSyncandroidsimple_sync_androidlibs. The libs directory should contain:

For SQLite client, copy osync_android.jar from <MDK_ROOT>MobileSdkandroidlib to <MDK_ROOT>MobileSdksamplesSyncandroidsimple_sync_androidlibs. The libs directory should contain: <MDK_ROOT>MobileSdksamplesSyncandroidsimple_sync_androidlibsosync_android.jar.

Build the project.

Run/Debug the simple_sync_android on a device emulator. After a successful build, to run the application, right click on the “simple_sync_android” project. Go to “Run As” item, and select “Android Application.” This will bring up the Android Emulator, where you should find “Mobile Sync” application.

Читайте так же:
Что будет если стереть iphone и синхронизировать

Figure 4-3 «Run As» Eclipse Project Menu

Once the Android emulator is loaded, the mSync application will be started. To sync with a Mobile Server, provide a sync client’s authentication information, the Mobile Server’s http url (for example, myhost: 8090) and select the «Sync» button.

Several menu options are available when you select the «Device Menu» button. For more information, see Table 4-1.

Figure 4-4 Synchronization UI

Table 4-1 Menu Options for «Device Menu» Button

Brings up the automatic Sync Agent screen

Allows users to modify contents of parameter file, OSE.ini

View the contents of the sync error log

Purge Error Log

Remove all contents from the sync error log

Exit the application and terminate the mSync process.

Selecting the Android device’s «Back» button puts the sync process in the background.

Examine the data after sync.

Use the Android SDK tool adb shell (located at <Android SDK root>android-sdkplatform-tools) , to connect to the running instance of a device or an emulator.

For SQLite client, use the sqlite3 tool, included with Android SDK, to connect to the synchronized database(s). For more information on sqlite3 utility, see Android documentation. The simple sync client, by default, creates databases under:

For example, if the user name is S11U1 and the user is subscribed to «SAMPLE11» publication, to connect to the database sample11.db and list all of its tables, the following commands are required: adb shell, cd /data/data/tests.sync/app_oracle.sync/sqlite_db/S11U1, sqlite3 sample11.db, and .tables

For Berkeley DB client, you can use dbsql utility for Android platform to examine the synchronization data. The dbsql utility is located at <MDK_ROOT>MobileSdkandroidtoolsbdb. You can use the Android SDK tool adb push (located at <Android SDK root>android-sdkplatform-tools), to copy it into the running instance of a device or an emulator. For more information on dbsql utility, see Berkeley DB documentation. The simple sync client, by default, creates databases under:

Android sqlite синхронизация с сервером

Есть приложение для PC/iPhone, использующее sqlite3 — хранит в файле. Предполагается еще android скоро.
Требуется сделать синхронизацию БД через сервер. Сервер — Linux, на сервере единственный сайт perl/CGI, БД MySQL. Вот чего хочется добиться:
* пользователь запускает приложение на одном устройстве либо PC, пользуется, данные попадают в локальный файл БД. Делает синхронизацию, вводя свой логин, — данные заливаются на сервер.
* пользователь запускает приложение на другом устройстве либо PC, делает синхронизацию и продолжает изменять то что делал на первом устройстве.
* пользователи пользуется приложением на обоих устройствах либо PC, после синхронизации на обоих устройствах, данные объединяются, не тереяются, дубликатов не создается (хотя фиг с ними, можно удалить руками).
* вариант о том, что всегда только одна БД, хранимая на сервере, не подходит — инета может и не быть временно.

Есть ли уже готовые решения? Как лучше всего организовать синхронизацию?
Желательно, чтобы синхронизация шла поверх http/https, но не критично. Рассматриваются и другие в плане безопасности варианты.

В голову приходит только следующее:
1. В каждую запись добавить id кто добавил (девайс 1, девайс 2, PC 1 и т д)
2. При нажатии на кнопку синхронизации, закидывать весь файл БД с устройства либо PC на сервер, там его бэкапить, обрабатывать на perl либо С, кидать назад на устройство обновленный файл и начинать его использовать.

От: nen777w
Дата:25.07.11 14:05
Оценка:
От: jinjik
Дата:25.07.11 15:39
Оценка:

Как раз такая схема мне и нужна, но:

Support for database vendors is provided through a Database Dialect layer, with implementations for MySQL, Oracle, SQL Server, PostgreSQL, DB2, Firebird, HSQLDB, H2, and Apache Derby included.

От: wildwind
Дата:25.07.11 19:33
Оценка: 2 (1)
От: nen777w
Дата:25.07.11 22:04
Оценка:
От: jinjik
Дата:26.07.11 08:16
Оценка:

Хорошая статья, придется изобретать подобный велосипед. С учетом специфики моей базы (существуют только простые запросы вида INSERT, UPDATE, DELETE и никогда не происходит изменение нескольких таблиц и нескольких записей в одной таблице в одном запросе) вот что я придумал:

    unique_id = device_id + atime (id девайса, который первый добавил поле + время добавления). Это поле будет уникально для всех записей всех таблиц и неизменно, на протяжении всей жизни записи до удаления. Все запросы в базе UPDATE и DELETE будут делаться только по этому полю.
    unique_id — см выше
    atime — время, когда было сделано изменение (для сортировки) — хранится в UTC.
    patched_devices — бинарная сумма id девайсов, где данное изменение было произведено. У клиента, который делает INSERT равен device_id, если DELETE, UPDATE, то равно 0. На сервере изменяется каждый раз, когда новый девайс забирает себе из лога апдейты: patched_deviced = patched_devices | device_id.
    query — непосредственно сам запрос.
    unique_id,atime,patched_device=0,query для записей типа UPDATE, DELETE
    unique_id,atime,patched_device=device_id,query для записей типа INSERT.
    SELECT query FROM history,devices WHERE device_id=device_idЗНАЧ AND !(patched_device & device_idЗНАЧ) AND atime > last_update_time ORDER BY atime;
    device_idЗНАЧ здесь равно id девайса, для которого делаем синхронизацию; после SELECT присваиваем last_update_time max(atime) для данного device_id из history.

Как вам идея и есть ли тут какие-нибудь подводные камни? Я пока вижу только одно: на девайсе поработали с базой, в хитроумных целях перевели время назад и опять поработали с базой. Но слать таких клиентов в случае чего подальше.

Читайте так же:
Регулировка громкости планшета на экране
От: wildwind
Дата:26.07.11 15:00
Оценка: 2 (1)

Здравствуйте, jinjik, Вы писали:

J>На сервере в таблице history будут хратиться все-все запросы с момента создания аккаунта.

Рапухнет таблица, да еще с учетом избыточного текстового представления. А за место ведь платить придется.

J>На новом девайсе все запросы при первой синхронизации будут запущены с нуля. Если пользователь пользовался прогой в течении года и было 20 запросов к базе в день (очень активный пользователь), то на его новом девайсе при первой инициализации аккаунта будет выполнено 7300 запросов. Около мегабайта запросов в текстовом виде, надо потестировать на скорость.

Думаю, пользователей она не обрадует, как и трафик. Не проще передать ли готовый файл с базой, сформированный за сервере?

J>есть ли тут какие-нибудь подводные камни? Я пока вижу только одно: на девайсе поработали с базой, в хитроумных целях перевели время назад и опять поработали с базой. Но слать таких клиентов в случае чего подальше.

Это ошибка по-моему. Ресетнул железку, восстановил бэкап, запустил прогу и тебя послали?

Подводные камни могут быть в такой ситуации. Сервер отправил очередную порцию данных, но не получил от клиента подтверждения об успешном приеме и применении изменений.

От: jinjik
Дата:27.07.11 05:50
Оценка:

Здравствуйте, wildwind, Вы писали:

W>Здравствуйте, jinjik, Вы писали:

J>>На сервере в таблице history будут хратиться все-все запросы с момента создания аккаунта.

W>Рапухнет таблица, да еще с учетом избыточного текстового представления. А за место ведь платить придется.

При активном пользовании прогой максимальное кол-во запросов в день где-то 20, каждый запрос в текстовом виде около 100 байт. Так что в моём случае это не критично. Уже начал тест приближенный к реальным условиям делать.

J>>На новом девайсе все запросы при первой синхронизации будут запущены с нуля. Если пользователь пользовался прогой в течении года и было 20 запросов к базе в день (очень активный пользователь), то на его новом девайсе при первой инициализации аккаунта будет выполнено 7300 запросов. Около мегабайта запросов в текстовом виде, надо потестировать на скорость.
W>Думаю, пользователей она не обрадует, как и трафик. Не проще передать ли готовый файл с базой, сформированный за сервере?

Вот тут основная проблема. Если хранить на сервере готовую базу, то увеличивается сложность синхронизации. Над этим вариантом думал-думал, но ничего не простого не придумал. Мне хочется сделать все как можно проще, чтобы потенциальных багов было на много меньше. Потому и возникла идея не держать всю базу на сервере, а лишь лог запросов.

J>>есть ли тут какие-нибудь подводные камни? Я пока вижу только одно: на девайсе поработали с базой, в хитроумных целях перевели время назад и опять поработали с базой. Но слать таких клиентов в случае чего подальше.

W>Это ошибка по-моему. Ресетнул железку, восстановил бэкап, запустил прогу и тебя послали?

Нет, тебя не послали. Тут я просто не гарантирую целостность базы, если пользователь перевел время назад (не путать с переездом по зонам — время в UTC).
Пришла идея: учитывать время последней транзации клиента, если время новой транзацкии < времени последней, игнорить транзакцию и говорить об этом пользователю. Спасибо

W>Подводные камни могут быть в такой ситуации. Сервер отправил очередную порцию данных, но не получил от клиента подтверждения об успешном приеме и применении изменений.

Все запросы в этом случае будут перевыполнены при следующей синхронизации. У него появятся дубликаты того, что добавили на других устройствах. Свои дубликаты не появятся. Надо подумать о механизме рукопожатий и комитах транзакций при синхронизации, чтобы этого не допустить.

От: wildwind
Дата:27.07.11 07:30
Оценка:

Здравствуйте, jinjik, Вы писали:

W>>Думаю, пользователей она не обрадует, как и трафик. Не проще передать ли готовый файл с базой, сформированный за сервере?

J>Вот тут основная проблема. Если хранить на сервере готовую базу, то увеличивается сложность синхронизации. Над этим вариантом думал-думал, но ничего не простого не придумал. Мне хочется сделать все как можно проще, чтобы потенциальных багов было на много меньше. Потому и возникла идея не держать всю базу на сервере, а лишь лог запросов.

Ты меня не понял. Держи на сервере лог, если хочешь, а клиенту посылай готовую базу. То есть те же 7300 запросов выполни на сервере, а клиенту отправь готовый результат.

J>Нет, тебя не послали. Тут я просто не гарантирую целостность базы, если пользователь перевел время назад (не путать с переездом по зонам — время в UTC).
J>Пришла идея: учитывать время последней транзации клиента, если время новой транзацкии < времени последней, игнорить транзакцию и говорить об этом пользователю. Спасибо

Общий смысл опять ускользнул. Пользователям не понравится, что синхронизация зависит от точности времени. Представь себе еще переходы на летнее время. Тебе нужно решить эту проблему, а не обходить.

голоса
Рейтинг статьи
Ссылка на основную публикацию
ВсеИнструменты
Adblock
detector