Escolar Documentos
Profissional Documentos
Cultura Documentos
by Avi Kapuya
Distribution of data across multiple machines enables you to deal with large amounts of
data and improve throughput. However, once the data is distributed, it becomes more
difficult to maintain data consistency. For example, transactions may change data that
resides on multiple servers. To be able to synchronize all the changes made by the
transaction into a single known state (before and after committing), a synchronization
point is needed, in the form of a transaction state.
Some NoSQL solutions loosen the requirements when it comes to consistency by not
supporting transactions, thus reducing the need for synchronization points. This relaxed
consistency approach may suit some use cases where consistency is less important, but
would be unsuitable for others.
To date, I have yet to see proper research that recommends a viable approach to dealing
with the problem of data inconsistency. Most applications are very intolerant to the ―third
state of a bit‖ –computer systems by nature are very dichotomic — it’s either Yes or No.
There is no easy way to obtain a programming paradigm that deals well with an unknown
state of data.
Unless a worthy solution at the application level is found that can deal with the data
inconsistency issues in NoSQL, most applications can only find limited use of NoSQL in
the form of caches, accelerators for specific tables, and more.
The question is: can distributed data services (NoSQL) help to scale data, even if it takes
into account the existence of synchronization points and their limitations? What would
be sacrificed if synchronization and transaction mechanisms were added on top of
NoSQL foundations? The answer is performance. Distributed and consistent data
services will always be slower than pure raw distributed data service.
Xeround’s cloud database is a SQL database that combines NoSQL principles to facilitate
elasticity, alongside the mechanisms to support locks, transactions and query capabilities
as in relational databases. Xeround’s SQL cloud database couples both SQL and NoSQL
to create a highly parallel, highly scalable, and available cloud database.