AtomixDB is a new open-source, embedded, distributed SQL database written in Go. It aims for high availability and fault tolerance using a Raft consensus algorithm. The project features a SQL-like query language, support for transactions, and a focus on horizontal scalability. It's intended to be embedded directly into applications written in Go, offering a lightweight and performant database solution without external dependencies.
Kronotop is a new open-source database designed as a Redis-compatible, transactional document store built on top of FoundationDB. It aims to offer the familiar interface and ease-of-use of Redis, combined with the strong consistency, scalability, and fault tolerance provided by FoundationDB. Kronotop supports a subset of Redis commands, including string, list, set, hash, and sorted set data structures, along with multi-key transactions ensuring atomicity and isolation. This makes it suitable for applications needing both the flexible data modeling of a document store and the robust guarantees of a distributed transactional database. The project emphasizes performance and is actively under development.
HN commenters generally expressed interest in Kronotop, praising its use of FoundationDB for its robustness and the project's potential. Some questioned the need for another database when Redis already exists, suggesting the value proposition wasn't entirely clear. Others compared it favorably to Redis' JSON support, highlighting Kronotop's transactional nature and ACID compliance as significant advantages. Performance concerns were raised, with a desire for benchmarks to compare it to existing solutions. The project's early stage was acknowledged, leading to discussions about potential feature additions like secondary indexes and broader API compatibility. The choice of Rust was also lauded for its performance and safety characteristics.
Summary of Comments ( 24 )
https://news.ycombinator.com/item?id=43183891
HN commenters generally expressed interest in AtomixDB, praising its clean Golang implementation and the choice to avoid Raft. Several questioned the performance implications of using gRPC for inter-node communication, particularly for write-heavy workloads. Some users suggested benchmarks comparing AtomixDB to established databases like etcd or FoundationDB would be beneficial. The project's novelty and apparent simplicity were seen as positive aspects, but the lack of real-world testing and operational experience was noted as a potential concern. There was some discussion around the chosen consensus protocol and its trade-offs compared to Raft.
The Hacker News post titled "Show HN: A Database Written in Golang" (linking to the AtomixDB GitHub repository) has generated several comments, offering a mix of praise, critique, and inquiries.
Several commenters express initial positive impressions, appreciating the project's ambition and the apparent clean codebase. One commenter highlights the clear documentation as a strong point, making the project approachable for those wanting to understand its inner workings. Another emphasizes the value of having a learning-oriented database project in Go, contrasting it with the complexity of established databases, and thus making it a good resource for educational purposes.
However, some commenters raise concerns and offer constructive criticism. A recurring theme is the lack of performance comparisons. Commenters question how AtomixDB stacks up against existing database solutions, emphasizing that benchmarks are essential for assessing the project's viability. They suggest comparing it with established Go-based databases like BadgerDB and BoltDB, or even more broadly with databases like SQLite. The absence of this data leaves potential users unsure of AtomixDB's practical applications.
Another point of discussion revolves around the choice of using Raft for distributed consensus. While acknowledging Raft's robustness, some commenters inquire about the performance implications and suggest exploring alternative consensus algorithms that might be more efficient for certain workloads. Related to this, questions are raised about the single-leader limitation in the current Raft implementation.
Further points of interest include questions regarding the project's maturity level and future plans. Commenters inquire about the roadmap, planned features, and the author's long-term vision for the database. There's also a discussion around potential use cases, with commenters speculating about scenarios where AtomixDB could be a good fit, such as embedded systems or specific niche applications.
Finally, some commenters offer practical advice and suggestions for improvement. One commenter points out the importance of testing and suggests incorporating property-based testing to ensure correctness. Another advises considering compatibility with WireGuard for secure communication.
In summary, the comments reflect a genuine interest in the AtomixDB project, appreciating the effort while also highlighting key areas for improvement, particularly regarding performance evaluation and providing a clearer picture of the project’s future direction.