1 What is CEDA?
CEDA is a high performance cross-platform embedded in-process multi-master replicated database technology suitable for the management of all sorts of data, such as
- spatial data for mining software
- relational data
- CAD drawings
- word processing documents
- multi-resolution terapixel images
CEDA is not client-server. Instead each application has its own in-process copy of the data cached in memory and its own file(s) on secondary storage to persist the data.
There can be thousands of participating databases connected in arbitary topologies. Multi-master data replication using Operational Transformation is key to the impressive characteristics of CEDA.
- Data coherency - the in-process data which is the target of updates is never stale
- Concurrency - each replica can be updated independently and concurrently, without distributed locks or optimistic concurrency control
- Data redundancy - data is replicated - usually on many physical machines, it's virtually impossible to lose data
- Causal consistency - operations are applied in an order which respects causality
- Partition tolerance - the network can partition in arbitary ways
- Availability - each node is available, regardless of whether other nodes go down or the network partitions
- Low latency - data is accessed in-process, there are no network round trips
- Performance - accessing in-memory data allows for extremely high performance
- Simplicity of application code - applications are written like single user applications accessing in-memory data, yet they're multi-user
- Infallible data access - since access to data is in-process, it is infallible, unlike access over fallible networks
- Branching and merging - configuration management on the entire database
- Real-time interactive collaboration - users can see each other's edits in real time, e.g. as they type characters in a document or move objects on a CAD drawing with the mouse
The name CEDA is derived from "DAta CEntric". This is in reference to the Data-Centric Principle
CEDA is well suited to deployment on the cloud, for example on AWS.
The perfectly smooth panning and zooming of images on the scale of Google Earth on a low performance laptop highlights the exceptional performance characteristics of the database engine.
CEDA can scale from one user to many thousands of users which interactively edit very complex and large amounts of data in applications that feel as responsive as single user applications. The data is replicated and synchronised efficiently, and users are able to view and edit their local copy of the data independently of network latency and network failures. The unique and revolutionary algorithms in CEDA typically merge hours of off-line data entry in a fraction of a second.
One of the prime motivations of CEDA is to support robust distributed data management, despite the fact that networks tend to be unreliable, have high latency, low bandwidth etc (see the eight fallacies of distributed computing).
The CEDA implementation avoids numerous software anti-patterns. This helps achieve simplicity, performance and robustness.
CEDA supports reactive programming - by recording dependencies between calculated outputs and inputs, so that outputs are automatically updated as required.
Database replication tends to make application defined messaging obsolete. For example, rather than publish/subscribe events using a message broker or bus, applications simply add events to their local database, or respond to the addition of events in their local database.