Replies: 7 comments 6 replies
-
Are you planning to build a higher abstraction on top of ZoneTree? e.g. a Document Store or something similar |
Beta Was this translation helpful? Give feedback.
-
Hi @dodyg, ZoneTree is a core database engine with several tuning options. Thus its primary target audience is advanced developers. People can create scalable or non-scalable document databases, graph databases, SQL databases, or other kinds of databases by using ZoneTree. ZoneTree works in a single instance. However, like any other core database engine, it is possible to use clustering and consensus algorithms to create scalable databases on top of ZoneTree. As far as I know, @KSemenenko started to develop a scalable time-series database for analytics using ZoneTree. He builds his database on Azure Blob Storage with the help of the FileStream abstraction of ZoneTree. I believe ZoneTree is an excellent opportunity for the NET ecosystem. Today, there are several popular NoSQL or Graph databases written in C++, Java, and Go, but only a few in the NET. Yet, I am hopeful for tomorrow, and I don't doubt that C#'s power, flexibility, and elegance will be the winning factor in the long term. Thank you for listening to my long answer to a short question. I have more to say, but I reserve that for documentation. |
Beta Was this translation helpful? Give feedback.
-
Any thoughts on adding merge operator support (https://github.com/facebook/rocksdb/wiki/Merge-Operator)? |
Beta Was this translation helpful? Give feedback.
-
Hi @ljcollins25 The good news! It is already supported.
https://tenray.io/docs/ZoneTree/api/Tenray.ZoneTree.IZoneTree-2.html There is also a unit test case that demonstrates atomic counters using ZoneTree: |
Beta Was this translation helpful? Give feedback.
-
I confirm @ljcollins25 that the Merge Operator feature in RocksDb is not equivalent to the atomic methods in ZoneTree. The feature is specific (many writes, few reads scenarios), and I don't need this feature for my business. Therefore I will not work on that, at least for now. It might be nice if you could develop the feature without impacting the current feature set and performance. Regarding the atomic update methods, global lock contention: All updates are written into the memory first. As a result, the lock contention will be small in most cases. |
Beta Was this translation helpful? Give feedback.
-
I think I found a better approach to achieving the goal of merge operators in RocksDB. The goal of the merge operator is to add parts of the value of a key in separate calls. The value associated with the key could be either a list or a JSON-like document. The merge operator feature in RocksDB utilizes levels in the LSM tree and makes it possible to merge the parts of the value from different levels. As far as I understand, the merge happens at the reading stage. One can achieve the same thing without adding the complexity to the LSM Tree. The proposal:
I think this approach achieves the same thing. |
Beta Was this translation helpful? Give feedback.
-
Ideas page is locked. |
Beta Was this translation helpful? Give feedback.
-
Ideas page is locked.
Please create new discussion pages when you want to share new ideas.
Beta Was this translation helpful? Give feedback.
All reactions