I'm working on a small key-value database, written in C++ and powered by RocksDB. It started as a hobby, but I am trying to slowly turn it into a stable project.
The project is called BerylDB. A PHP API was released a couple of days ago, and currently working on a NodeJS gateway. I'm super excited about the project and actively improving its functionalities. The server is fully modular, which means that components can be loaded/unloaded as required. In addition to data storage, the server has channels, and clients can subscribe to them. This make it a great solution for real time analytics.
The ultimate goal of this project is to have a community of custom modules that users may be interested on. This may be useful for developers and/or companies requiring specific needs.
I'm open to collaborations! If you happen to have interested in databases, please let me know. I am on Discord. Any kind of collaboration or feedback would be appreciated. If you work for an startup or need high speed performance, please let me know!
Haha this is cute the author has now changed it to have the quotes. I think they misunderstood, but,--hello!-- my suggestion to the author is check out the shownew page and see the format of the submissions there and alter the title to reflect those. then it will show up on the shownew page and could hit the show page.
Interested in this project! Ever since Redis become much more than a KV, I've been seeking something a bit simpler. I'll admit, Redis is simple to get stared with, but there is a lot to learn once you do.
What goals does Beryl have, both short and long? Does it aim to compete with Redis? Can you host a cluster of BerylDB instances? What type of benchmarks are you seeing?
I am currently working on a cluster system. I am gauging whether to use the Raft consensus algorithm, or the typical master-slave replication schema. Not only that, but I am working on this as we speak.
As your question about long-term goals goes: I am interested in real time analytics, so hopefully we can deploy a SaaS-based platform. I am working hard to make our modules developer-friendly, so you can have access to C++ speeds with little coding. These are dreams for now, as we are just getting started, I hope you understand.
BerylDB is still in beta, and your input is appreciated.
I was equally confused (read the headline, asked "how is that different from RocksDB?", and then read the explanation that it was based on RocksDB), but it sounds like this is actually an alternative to Redis, not RocksDB. So the difference is that it's exposed over a network, rather than embedded locally.
Looks interesting! Do you have plans to add aggregations and analytics functions? It seems like you can do simple counting with TOUCH but I didn’t see any SUM etc. Can it run in-memory or just on disk? If in-memory how does it benchmark vs Redis? Thanks and congrats on the launch!
It says the network key should be "Name of global network". Not sure what that is, and I don't see anything using it, printing it, etc. What's this for?
I'll research a bit on providing a different approach. I am now thinking about returning arrays (containing a $status var), but will remain open to ideas.
Both the redis and memcached PHP apis return boolean false when their equivalent of get() is called and no such key exists.
Personally, I'd stick with that and raise an exception on network and similar types of errors. PHP also supports trigger_error() but there doesn't seem to be top level guidance on errors vs exceptions. Try/catch just seems more straightforward to me.
Neat!.
Feature request:
1) Please consider adding a rust helper library
2) Please consider making backups and fault-tolerance easier than current solutions
24 comments
[ 2.9 ms ] story [ 65.4 ms ] threadI hope everyone is having a great week!!
I'm working on a small key-value database, written in C++ and powered by RocksDB. It started as a hobby, but I am trying to slowly turn it into a stable project.
The project is called BerylDB. A PHP API was released a couple of days ago, and currently working on a NodeJS gateway. I'm super excited about the project and actively improving its functionalities. The server is fully modular, which means that components can be loaded/unloaded as required. In addition to data storage, the server has channels, and clients can subscribe to them. This make it a great solution for real time analytics.
The ultimate goal of this project is to have a community of custom modules that users may be interested on. This may be useful for developers and/or companies requiring specific needs.
I'm open to collaborations! If you happen to have interested in databases, please let me know. I am on Discord. Any kind of collaboration or feedback would be appreciated. If you work for an startup or need high speed performance, please let me know!
Discord: https://discord.gg/H6HVxeDq
Docs: https://docs.beryl.dev/
Server repository: https://github.com/beryldb/beryldb
Client (command line): https://github.com/beryldb/beryldb-cli
PHP API: https://github.com/beryldb/php-beryl
E: why the downvote?
https://news.ycombinator.com/shownew
What goals does Beryl have, both short and long? Does it aim to compete with Redis? Can you host a cluster of BerylDB instances? What type of benchmarks are you seeing?
I am currently working on a cluster system. I am gauging whether to use the Raft consensus algorithm, or the typical master-slave replication schema. Not only that, but I am working on this as we speak.
As your question about long-term goals goes: I am interested in real time analytics, so hopefully we can deploy a SaaS-based platform. I am working hard to make our modules developer-friendly, so you can have access to C++ speeds with little coding. These are dreams for now, as we are just getting started, I hope you understand.
BerylDB is still in beta, and your input is appreciated.
Sincerely.
It's a TCP-based text protocol. We have implemented a simple protocol (https://github.com/beryldb/beryldb/blob/unstable/include/pro...)
Thank you for your feedback. I am going to update the documentation and explain this issue using a different approach.
Appreciated.
Similar question on this:
What is type? It says it defaults to "clients", but not what that means, what the other choices are, etc.Similar for "connecting class name". It's not clear what things that drives.
That isn't a great idea, since that would mean no discernable difference from
- An error, like a network error
- No such key exists
- Key did exist, and it's value was 0, though I suppose I could test the type with gettype()? Seems odd to return an int instead of a boolean though.
For comparison, the phpredis api raises an exception for errors and returns a boolean false if no such key exists.
I'll research a bit on providing a different approach. I am now thinking about returning arrays (containing a $status var), but will remain open to ideas.
Ideas? At any rate, I appreciate your input.
Personally, I'd stick with that and raise an exception on network and similar types of errors. PHP also supports trigger_error() but there doesn't seem to be top level guidance on errors vs exceptions. Try/catch just seems more straightforward to me.
Thanks for your feedback!