4 ms·
I must say just off the bat and a few minutes reviewing, I'm extremely impressed. I stared the repository to play with it further later.
by alexpadula 2y ago
I must say just off the bat and a few minutes reviewing, I'm extremely impressed. I stared the repository to play with it further later.
- Rochus 2y agoI have been considering for some time whether I should change the backend. LSM trees and a much simpler implementation than, for example, RocksDb seem attractive.
- alexpadula 2y agoYeah RocksDB is amazing so is LevelDB but there are tradeoff's with every design. LevelDB and RocksDB are very similar in design, RocksDB is a fork of LevelDB. The code bases are very large, especially RocksDB and that specific LSM tree design is pretty standardized now. TidesDB is I'd dare to almost say newer generation :)
- Rochus 2y agoDo you have applications which use the concurrency feature of your database?
- alexpadula 2y agoIn what way? There are examples with integration tests currently. The website explains some tadbits regarding concurrency quite well. I'd need to better understand what you mean.
- Rochus 2y agoI am interested in your overarching objective for the database. For example, my Udb was only a means to an end, so that I could equip my applications such as CrossLine, WorkTree, FlowLine, or Herald with incremental persistence. I had considered concurrency, but never needed it. However, I had looked at various larger libraries (such as RocksDb) for a multi-user version of Crossline, for example. With RocksDb, there are numerous applications that can be studied and which demonstrate the robustness and scalability of the database. A much leaner solution with concurrency and transaction properties seems attractive, but would of course have to prove itself first.
- alexpadula 2y agoVery cool. I do agree, much to prove still. If you want feel free to join the Discord and we can talk in real-time. Could be a diverse and interesting conversation.
- Rochus 2y agoJust discovered that you're requiring C23 which I don't have on my development machine. Actually one of the reasons I didn't continue with RocksDb yet is that they moved to a pretty recent c++ version, which I neither have. I think for infrastructure code (such as a database) it is better to take a very conservative approach to language versions (to avoid dependency domino effects).
- alexpadula 2y agoOh noo. I've thought about this more than I'd like to admit. I'd need to review if it's possible to refactor a bit to work with C99+. I don't believe there would be many changes but it's been awhile writing the entire code base as it is. Because TidesDB is in BETA v0.8.0 currently we can definitely do this. I'm curious do you use CMake? I will create an issue. https://github.com/tidesdb/tidesdb/issues/356 https://github.com/tidesdb/tidesdb/issues/356
- Rochus 2y agoI don't want to burden you with work, so don't feel obliged in any way. This is simply my opinion (there are also good reasons for newer C versions). In all my personal projects, I don't have any newer versions than C99 or C++11 (most are even C++98/03). I recently even migrated a compiler backend framework from C++17 to C++11 to use it: https://github.com/rochus-keller/eigen/ https://github.com/rochus-keller/eigen/. I could do the same with your code if I would use it, but first I have to move forward in other projects. Concerning cmake: I only use it if unavoidable; instead I implemented my own build system (https://github.com/rochus-keller/busy/ https://github.com/rochus-keller/busy/) some years ago which I now use for most of my personal projects.