db4o Kacper Skory Marcin Talarek Snapshot Replication db4o Kacper Skory Marcin Talarek
Replikacja Powielanie zmian w bazie danych do innych baz. np. z bazy lokalnej na ogólnodostępną
Biblioteki db4o-8.0/lib/db4o-8.0.249.16098-all-java5.jar drs-8.0/lib/dRS-8.0.249.16098-core.jar db4o Replication System Do pobrania ze strony producenta db4o.com
Klasa przykładowa Car public class Car { private String name; package zsbd.db4o.replication.snapshot.example; public class Car { private String name; private Pilot pilot; public Car(Pilot pilot, String name) { this.pilot = pilot; this.name = name; } public String getName() { return name; public void setName(String name) { public Pilot getPilot() { return pilot; } public void setPilot(Pilot pilot) { this.pilot = pilot; @Override public String toString() { return "Car [name=" + name + ", pilot=" + pilot + "]";
Klasa przykładowa Pilot package zsbd.db4o.replication.snapshot.example; public class Pilot { private String name; private int points; public Pilot(String name, int points) { super(); this.name = name; this.points = points; } public String getName() { return name; public void setName(String name) { this.name = name; } public int getPoints() { return points; public void setPoints(int points) { this.points = points; @Override public String toString() { return "Pilot [name=" + name + ", points=" + points + "]";
Konfiguracja EmbeddedConfiguration configuration = Db4oEmbedded.newConfiguration(); Generowanie UUID w celu identyfikacji obiektów między bazami. configuration.file().generateUUIDs(ConfigScope.GLOBALLY); Generowanie znaczników czasowych, aby odnajdywać zmiany. configuration.file().generateCommitTimestamps(true);
Replikacja w jedną stronę Tworzenie sesji replikacji dla baz biorących udział w replikacji Ustalanie kierunku replikacji Pobranie zmian od ostatniej replikacji Replikacja zmienionych obiektów Zatwierdzenie sesji
Replikacja w jedną stronę Db4oEmbeddedReplicationProvider providerA = new Db4oEmbeddedReplicationProvider(sourceDatabase); Db4oEmbeddedReplicationProvider providerB = new Db4oEmbeddedReplicationProvider(destinationDatabase); ReplicationSession replicationSession = Replication.begin(providerA, providerB); replicationSession.setDirection(replicationSession.providerA(), replicationSession.providerB()); ObjectSet changes = replicationSession.providerA() .objectsChangedSinceLastReplication(); for (Object changedObject : changes) { replicationSession.replicate(changedObject); } replicationSession.commit();
Replikacja w obie strony Tworzenie sesji replikacji dla baz biorących udział w replikacji. Pobranie zmian od ostatniej replikacji dla obu partnerów replikacji. Replikacja zmienionych obiektów
Replikacja w obie strony Db4oEmbeddedReplicationProvider providerA = new Db4oEmbeddedReplicationProvider(database1); Db4oEmbeddedReplicationProvider providerB = new Db4oEmbeddedReplicationProvider(database2); ReplicationSession replicationSession = Replication.begin(providerA, providerB); ObjectSet changes1 = replicationSession.providerA().objectsChangedSinceLastReplication(); ObjectSet changes2 = replicationSession.providerB().objectsChangedSinceLastReplication(); for (Object changedObjectOnDesktop : changes1) { replicationSession.replicate(changedObjectOnDesktop); } for (Object changedObjectOnMobile : changes2) { replicationSession.replicate(changedObjectOnMobile); replicationSession.commit();
Replikacja w jedna stronę z ograniczeniem co do klasy Tworzenie sesji replikacji dla baz biorących udział w replikacji Ustalanie kierunku replikacji Pobranie zmian od ostatniej replikacji. Tylko zmiany obiektów klasy podanej jako argument. Replikacja zmienionych obiektów Zatwierdzenie sesji.
Replikacja w jedna stronę z ograniczeniem co do klasy Db4oEmbeddedReplicationProvider providerA = new Db4oEmbeddedReplicationProvider(sourceDatabase); Db4oEmbeddedReplicationProvider providerB = new Db4oEmbeddedReplicationProvider(destinationDatabase); ReplicationSession replicationSession = Replication.begin(providerA, providerB); replicationSession.setDirection(replicationSession.providerA(), replicationSession.providerB()); ObjectSet changes = replicationSession.providerA().objectsChangedSinceLastReplication(clazz); //Car.class for (Object changedObject : changes) { // tutaj mogą znalesc sie dodatkowe warunki (np if // (((Person)changedObject).getName().equals("Kowalski)) ... ) replicationSession.replicate(changedObject); } replicationSession.commit();
Replikacja usunięć Tworzenie sesji replikacji dla baz biorących udział w replikacji Replikacja usunięć
Replikacja usunięć Db4oEmbeddedReplicationProvider providerA = new Db4oEmbeddedReplicationProvider(database1); Db4oEmbeddedReplicationProvider providerB = new Db4oEmbeddedReplicationProvider(database2); ReplicationSession replicationSession = Replication.begin(providerA, providerB); replicationSession.replicateDeletions(clazz); replicationSession.commit();