February 2023 Summaries
1 posts from TigerBeetle
Filter
Month:
Year:
Post Summaries
Back to Blog
TigerBeetle focuses on delivering high-performance client integrations across various ecosystems, such as Java, Dotnet, Go, and Node.js, using a unique threading and memory model. Central to this strategy is the use of a single, well-tested client written in Zig, known as tb_client, which serves as the foundation for all other client implementations through a Foreign Function Interface (FFI) API. This approach minimizes the effort and potential bugs associated with rewriting components for each programming language while ensuring efficient zero-deserialization for memory control in languages like Go and C#. In languages such as Java and JavaScript, additional steps are required to handle data conversion, which can lead to increased costs for serialization. TigerBeetle’s single-threaded design efficiently handles concurrent requests by dedicating a thread to process application requests, allowing multiple application threads to share connections through a callback mechanism. This design, while efficient, requires specific handling of callbacks depending on the language to avoid blocking TigerBeetle's internal thread. The tb_client API's performance is demonstrated in benchmarks, where language implementations in Zig, Go, Java, and C# are compared, showcasing the minimized overhead of FFI calls. Zig's cross-compilation capabilities further facilitate building the tb_client for various platforms, making TigerBeetle's high-level wrappers consistent without compromising developer experience.
Feb 21, 2023
1,434 words in the original blog post.