diff and update when a user is actually migrating, let server1 run until all users have migrated, if migrated prevents to ever connect to server1
simple. best On Thu, Jun 19, 2014 at 1:59 PM, jose isaias cabrera <cabr...@wrc.xerox.com> wrote: > Simon Slavin wrote... > > > >> On 19 Jun 2014, at 3:55pm, jose isaias cabrera <cabr...@wrc.xerox.com> >> wrote: >> >> These servers will be in two different servers and in two different >>> parts of the world, so network access will be very slow. What I am >>> thinking in doing is to copy the data on Server1 to Server2 and set the >>> starting id at a higher point than the last id on Server1. For example, >>> Server1 highest project id is 134000, so, I would set the start id for >>> Server2 to 135000. The Server two will continue to add new projects, so the >>> next project id will be 135001 and so forth. >>> >> >> Is your whole database really just in a single table ? If not, you have >> to figure out how to spot related records in other tables. Once you've >> done that you need to have a 'LastUpdateDate' column on every table. And >> then you have to worry about spotting rows which have been deleted. Since >> the row has been deleted, there are no 'LastUpdateDate' values which let >> you spot it ! >> > > Thanks for helping Simon. Yes, there are a bunch of more tables and yes, > each of them have a LastUpdateDate and they all will be based on ProjID, > which is id in the LSOpenProjects table. This is only temporarery until we > close all the records in Server1.db and then, only one db, Server2.db will > be used. > > > >> Synchronising two different databases is ridiculously difficult to get >> right. Especially when both of them continue to be modified and when you >> continue to make use of AUTOINCREMENT columns to number new rows. There is >> no good general solution. There's not even really a good book on >> approaches to the problem. >> > > Yes, I understand. For Server1, no record will be added, so the last > record opened, in Server1, will continue to be the last one until it is > closed. For Server2, I will insert a dummy record to be 135001, which will > guide the rest of the new records that will be open in Server2. So the > next autoincrement will be 135002, etc. There last record for Server1 > should be, at most, at 134500, so there is a space of 500 empty records. > We want to do this so that there is an specific number that will guide the > original record for Server2 as well as for Server1. > > >> From the information you posted I would recommend that you keep the two >> database files separate and explain to your users when to use one and when >> to use the other. You can have two different apps, one of which uses the >> 'old server' data, and the other accesses the 'new server' data. Or you >> can have one app which can flip between database files. If this is at all >> practical in your business it will make things much simpler and your users >> will understand how their system works far better. >> > > Yes, this will happen, and they know, but in a few months, Server1 will no > longer be, so we need to continue to update until we close that server. > > >> However if you have a reason to need both sets of data in the same >> database, then consider what would happen if instead of introducing a >> 'LastUpdateDate' field everywhere and the clever programming you'd need to >> do to use it correctly, do the following: >> >> * Create a new table called 'SQLCommandLog' in a new attached database. >> * Table has the usual AUTOINCREMENT rowid and one text column called >> 'command'. >> * All commands which might change the data (INSERT/UPDATE/DELETE) get >> saved in the table. >> * To update another database to reflect the changes to this one, simply >> issue those commands, then empty the table again ready for new commands. >> >> That way you don't have to copy a big database file of your data to the >> other server, you just copy a small database of SQL commands. >> > > Hmmmm... > > >> There are the usual problems with choosing different AUTOINCREMENT row >> numbers on different servers but this system may be simpler to implement >> than anything clever with deep understanding of your business logic. >> >> Simon. >> > > I appreciate your input, Simon. > > josé > _______________________________________________ > sqlite-users mailing list > sqlite-users@sqlite.org > http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users > _______________________________________________ sqlite-users mailing list sqlite-users@sqlite.org http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users