SymmetricDS is web-enabled, database independent, data synchronization/replication software. It uses web and database technologies to replicate tables between relational databases in near real time.
The software was designed to scale for a large number of databases, work across low-bandwidth connections, and withstand periods of network outage.
By using database triggers, SymmetricDS guarantees that data changes are captured and atomicity is preserved.
Support for database vendors is provided through a Database Dialect layer, with implementations for MySQL, SQL Server, PostgreSQL, HSQLDB, Oracle, and Apache Derby included.
Synchronization can be configured to push data (trickle-back) or pull data (trickle-poll) at an interval. SymmetricDS allows for 2-tier and even n-tier synchronization, such as the following:
· A farm of web server nodes fronting an enterprise-class general office database
· A handful of regional servers for synchronizing from the general office to remote geographical areas
· 1000(s) of store server nodes using a departmental class database to sync with a regional node
· 10(s) of Point of Sale (POS) register nodes using an embedded database to sync with a store server
Deployment options include the following:
· Web application archive (WAR) deployed to an application server such as Tomcat, Jetty, or JBoss
· Standalone service
· Embedded in an application
Here are some key features of "SymmetricDS":
· Data Channels - Table synchronizations are grouped into independent channels
· Guaranteed Delivery - Synchronized data is guaranteed to arrive at the target destination. If a synchronization fails, the same batch of data will be retried until it succeeds or manual intervention is taken. All other data synchronization is halted for the failed channel only.
· Transaction Aware - Data updates are recorded and replayed with the same atomicity
· Centralized Configuration - All configuration is downloaded from a central registration server
· Multiple Deployment Options - Standalone engine, web application, embedded software component
· Data Filtering and Rerouting - Allows for localized passwords and sensitive data filtering/routing
· HTTP Transport - Pluggable transport defaults to Representation State Transfer (REST-style) HTTP services
· Payload Compression - Optionally compresses data on transport
· Notification Schemes - Push (trickle-back data) or Pull (trickle-poll data) changes
· Symmetric Data Protocol - A fast streaming data format that is easy to generate, parse, and load
· Plug-In API - Add customizations through extensions and plug-in points
· Two-Way Table Synchronization - The same table can be synchronized both to and from the host system while avoiding update loops
· Database Versioning - Specify data synchronization by version of target database
· Auto Database Creation - Optionally allow creating and upgrading of database schema
· Embeddable - Small enough to embed or bootstrap within another application (i.e. a POS application)
· Multiple Schemas - Supports multiple database schemas naturally through the existence of Data Channels
· Primary Key Updates - Captures the "before" and "after" data being changed, allowing updates to primary key data
· Remote Management - Administration through a Java Management Extensions (JMX) console
· Remote Database Administration - SQL can be delivered and run at remote databases via the synchronization infrastructure
· Initial Data Load - Prepare the satellite database with an initial or recovery load of data
What`s New in This Release: [ read full changelog ]
· [SYMMETRICDS-364] - Failing to read database tables when SQL Server 2005 is being used
· [SYMMETRICDS-369] - SymmetricDS doesn`t start up because of xml column in postgres
· [SYMMETRICDS-382] - Oracle timestamp columns should synchronize milliseconds
· [SYMMETRICDS-384] - Authentification failed when using custom INodePasswordFilter
· [SYMMETRICDS-394] - During the extract process, if there is an error, then the extract file does not get deleted.
· [SYMMETRICDS-399] - 22 million row initial load blew up at the very end because the stats in sym_incoming_batch became too big for the column
· [SYMMETRICDS-402] - If there is an ER on the reload channel, then other channels have to be sent to correct the error
· [SYMMETRICDS-403] - symmetric-ddl conflicts with apache ddlutils