4 ms·
Hey! Thank you very much for the kind words. The system currently sorts comparing raw byte values directly. So if I'm understanding correctly, no it doesn't
by alexpadula 2y ago
Hey! Thank you very much for the kind words.
The system currently sorts comparing raw byte values directly. So if I'm understanding correctly, no it doesn't handle unicode sorting. If key's were stored as strings and compared that way, yes. :)
- Rochus 2y agoOk, I see. I implemented an object database based on the Sqlite backend some time ago for CrossLine and other applications, which includes ideas of MUMPS and also uses unicode collating algorithms implemented in Qt, but it's c++, see e.g. https://github.com/rochus-keller/Udb/blob/master/Idx.cpp https://github.com/rochus-keller/Udb/blob/master/Idx.cpp.
- alexpadula 2y agoOu!! really checking it out.
- deleted 2y ago[deleted]
- alexpadula 2y agoI 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.
- 2y ago
- alexpadula 2y agoIf you wanna know why I chose binary keys - I wanted the user to be able to use any data type, cross language support, also I believe the way we have it now is faster for comparisons I believe. I overall think this a bit more efficient than storing a string key.
- Rochus 2y agoThat's a sensible approach, and Sqlite does it that way too. But unicode becomes an issue at the latest when you want to implement text indices. Based on your description, I assumed that your database already offers something like this up front. But of course you can also do this in higher layers.
- alexpadula 2y agoOh yes indeed!