yugabyte / yugabyte-db

YugabyteDB - the cloud native distributed SQL database for mission-critical applications.
https://www.yugabyte.com
Other
8.97k stars 1.07k forks source link

Preferred client ? #50

Closed ddorian closed 6 years ago

ddorian commented 6 years ago

Seems like you guys will support redis + cassandra + postgresql. While this is nice, do you have in mind a library to handle all features of the db ?(not talking about a separate one).

Simplest case: While pg-client can support ~all features (since you throw everything in a query), it can't (automatically) remove the 1-hop that cql-client does by keeping a hash-token-map on the client and thus talking to the primary/secondary directly.

Makes sense ?

rkarthik007 commented 6 years ago

Hi @ddorian,

Yes, completely makes sense - thanks for the insightful question! And yes this is exactly the direction we are heading towards. I have added what we are up to in the context of each of these language APIs:

1. Enhance CQL to get on par with SQL

This is going to be available the soonest. We have already done a number of enhancements in this direction, and are planning on adding many more:

We already support a huge array of features such as batch inserts, IN clauses in queries, prepare-bind, user defined types, TTL, Spark adapters, reads from followers and nearby datacenters, etc. Additionally, yugabyte cassandra driver is locality aware, can recognize node additions and removals.

We feel this is the fastest path to production, because the ecosystem and language enhancements are already built around scale-out and clustering.

2. Enhance Postgres to be scale out

For postgres to understand scale-out, we need two layers of enhancements:

Note that we are currently working on Postgres support. It should be out in a few weeks, and is going to start with supporting basic commands. We will then extend the query set to make it functional.

3. Enhance Redis as a DB

We already support one-hop location of the data using our version of the Redis client. We are planning to add reads from followers and the nearest datacenter (we call this "tunable reads"). Note that while we have not started working on tunable reads for Redis, this is very much in our roadmap for the near future.

Summary

Since our Cassandra client/ecosystem is pretty mature, would you consider using that as a path for some of the more advanced queries? Would love to hear if you had some queries/usecase in mind which could get you started - we always love to prioritize those higher.

ddorian commented 6 years ago

thanks, cql is best supported