New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Implement Sonic Channel libraries for popular programming languages #69
Comments
@moshe is working on a Python binding, see #82 and https://github.com/moshe/asonic |
Hello @valeriansaliou I have implemented a tiny go library for sonic https://github.com/expectedsh/go-sonic |
Thank you so much, I'm adding it to the README right now. |
Is there a Rust client library provided already? I imagine since the server is written in rust, it wouldn't be too difficult to put together a rust client. |
Hi! Not just yet, but I am open to contributions on this :)
…--
Valerian Saliou
CTO at Crisp
On 25 Mar 2019, at 9:53 PM, Riley ***@***.***> wrote:
Is there a Rust client library provided already? I imagine since the server is written in rust, it wouldn't be too difficult to put together a rust client.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or mute the thread.
|
If no one else has started working on it, I’d love to take on the Ruby client! |
@kaspermeyer I confirm that to my knowledge no one has yet started working on the Ruby client, you can go for it 😄 Thanks! |
Hey guys! I wrote a small php client library. |
I have implemented a bulk feature in my library, maybe the official library (in nodejs) should have it ? |
@alexisvisco thanks, looks neat. I'll think about it for the NodeJS library. At the network level, it's still the same so there's no (speed) optimizations involved w/ a bulk feature in the library, though it reduces the lines of code for users that need it. |
In my implementation I have splitted the number of coroutines and assign a new connection to it (because in Go you can't read a connection by multiple coroutines and it's normal). For example: Each coroutines is independent so there is an optimisation because of the paralelization, you can speed up to 2 times faster in this case (if the sonic server can handle this traffic). |
@alexisvisco I see, you're able to increase the concurrency level at the library level. Sonic will definitely scale this better with your model, indeed. Depending on the number of cores of the machine it'll use CPU cores at their best as Sonic spawns an independent thread per Sonic Channel connection. I have plans to add a worker pool to Sonic to handle the query + suggest commands. I've already made the protocol async-compatible for search mode (in advance), so any "worker pool" improvement in Sonic will not require any change in the protocol. |
@alexisvisco just curious, in which context / for which project are you using Sonic, if so? What motivated you to build the Golang integration? (if that can be said publicly) |
I'll probably have a go at making a native Rust client. Should make for a good learning experience! |
@valeriansaliou Expected.sh is a 🇫🇷 container as a service, we want to build something awesome. We wanted to use Sonic to ingest logs and be able to search them. However we noticed that it does not really fit because we would have wanted to be able to filter over time, and for now we can't with Sonic. We will keep an eye on sonic but we will rather use something else. To be honest I have created the Go driver because our stack is in Go and I wanted to quickly know all of sonic. And also because the project looked cool 😎 |
Hi! I've created a Ruby client for Sonic - https://github.com/atipugin/sonic-ruby. There are some improvements to do, but it's already usable :) |
Thanks @atipugin I've added it to the README 👍 |
@touhonoob and me have merged our libraries into his repository, so you can remove my repo from the README. 😃 |
Hi,I found that the current java client is synchronous, so I wrote an asynchronous client using netty.https://github.com/alohaking/jsonic |
@alohaking can you submit a PR where you add the link to your library in the README, below the other Java library? Thanks! |
Signed-off-by: Valerian Saliou <valerian@valeriansaliou.name>
@alohaking just did it myself. Thanks! |
Hmm I see that im late to the party :( https://github.com/OGKevin/go-sonic The only thing is missing is proper client documentation, make sure the query length is checked to prevent overflow and actually implementing it in my own project. |
You can still submit a PR to add your library to Sonic's README ;) |
Hi, I made a Rust client sonic_client, using |
Hi there! Thanks a ton, adding it to README now! Regarding your question, yes, they can share the same ID pool as all async events are routed on the same TCP channel (in search mode). |
Sonic cannot be integrated to an existing application code without a Sonic Channel library made for the used programming language.
Currently, a NodeJS library is available node-sonic-channel, but that's all!
We'd need to support more programming languages with clean implementations of the Sonic Channel protocol as specified in: PROTOCOL.
Programming languages:
The text was updated successfully, but these errors were encountered: