Skip to content
Gerardo Recinto edited this page Jan 24, 2024 · 7 revisions

Welcome to the Sop wiki!

SOP V2 is a Golang code library that provides Scaleable Objects Persistence. It is a general purpose database engine sporting ACID transactions & two phase commit for seamless application integration to 3rd party databases.

Using SOP, all you need to do is author your application data definition(structs) and SOP will take care of storage and retrieval. Offering a transaction based API that gives you ACID attributes of a transaction.

SOP is able to combine all the best features of Cassandra(so we don't have to reinvent the wheel) & Redis for global caching & add on top of it, ACID transactions & Objects based data management. You no longer need to author tables(& SQL scripts/ORM) in Cassandra, as SOP takes care of Objects persistence & very fast searches(using M-Way Trie B-Tree) to Cassandra. Also you no longer need to write Redis based data caching because SOP has that built-in.

Since SOP turns your application(micro-service, web server, etc...) into the database server itself, we essentially removed the heavy SQL middleware from the setup. Thus, giving your application the raw power of the backend storage engine.

And by using a cool language like Golang, your data mining logic suddenly becomes in full unison with your app. No more impedance mismatch.

All the components or ingredients required to create or to support ACID transactions had been done in a very efficient manner using Redis. Example, there is no row locking, but instead, an equivalent locking is achieved by using Redis based algorithm for batch oriented logical locks.

SOP is able to provide a general purpose, domain "flexible" solution to data management, that will always scale as M-Way Trie became a commodity(or core feature) of the Objects "container"(SOP calls it "store" but analogous to a table or a set of tables in RDBMS). In one case, it can be your database system for your payroll & inventory, in another case, it can be your AI database storing "vectors" and such, etc...

The SOP, as a framework, is very portable & highly adaptive. In V2, it combines Cassandra & Redis and enhance the solution, adding the cool features listed above. It also comes with an "in-memory" version that can be used like a sorted map.

Future versions can integrate with other storage sub-systems and such, or even, have its own storage features, if needed and requested.

Clone this wiki locally