All Projects → rbastic → go-schemaless

rbastic / go-schemaless

Licence: MIT license
An open-source sharded database framework based on Uber's Schemaless

Programming Languages

go
31211 projects - #10 most used programming language
Nix
1067 projects

Projects that are alternatives of or similar to go-schemaless

bigtable-autoscaler-operator
Kubernetes operator to autoscale Google's Cloud Bigtable clusters
Stars: ✭ 22 (-72.15%)
Mutual labels:  bigtable
makisu
Fast and flexible Docker image building tool, works in unprivileged containerized environments like Mesos and Kubernetes.
Stars: ✭ 2,414 (+2955.7%)
Mutual labels:  uber
surger
⚡ Is there surge pricing around me right now?
Stars: ✭ 20 (-74.68%)
Mutual labels:  uber
libretaxi2
Open source Uber PoC #deleteuber
Stars: ✭ 90 (+13.92%)
Mutual labels:  uber
athenadriver
A fully-featured AWS Athena database driver (+ athenareader https://github.com/uber/athenadriver/tree/master/athenareader)
Stars: ✭ 116 (+46.84%)
Mutual labels:  uber
uber
Uber API client
Stars: ✭ 18 (-77.22%)
Mutual labels:  uber
deck.gl-time-series-widget
A React Time Slider implementation for DECK.GL - (non)temporal data - by CPU filtering ⌛
Stars: ✭ 19 (-75.95%)
Mutual labels:  uber
emulator-tools
Google Cloud BigTable and PubSub emulator tools to make development a breeze
Stars: ✭ 16 (-79.75%)
Mutual labels:  bigtable
Operational-Transformation
A collection of Algorithms to Synchronise changes across multiple clients using Operational Transformation
Stars: ✭ 25 (-68.35%)
Mutual labels:  distributed-database
RideShare-Trip-Stats
Chrome Extension to visualize your uber trip statistics
Stars: ✭ 61 (-22.78%)
Mutual labels:  uber
uberscriptquery
UberScriptQuery, a SQL-like DSL to make writing Spark jobs super easy
Stars: ✭ 54 (-31.65%)
Mutual labels:  uber
the-apache-ignite-book
All code samples, scripts and more in-depth examples for The Apache Ignite Book. Include Apache Ignite 2.6 or above
Stars: ✭ 65 (-17.72%)
Mutual labels:  distributed-database
awesome-bigtable
⚡ Delightful list of Google Bigtable resources, packages and interesting finds.
Stars: ✭ 37 (-53.16%)
Mutual labels:  bigtable
greycat
GreyCat - Data Analytics, Temporal data, What-if, Live machine learning
Stars: ✭ 104 (+31.65%)
Mutual labels:  distributed-database
shardingsphere-ui
Distributed database middleware
Stars: ✭ 41 (-48.1%)
Mutual labels:  distributed-database
yildiz
🦄🌟 Graph Database layer on top of Google Bigtable
Stars: ✭ 24 (-69.62%)
Mutual labels:  bigtable
jelass
Janus + Elastic Search + Cassandra docker container with SSL Client Certificates implemented.
Stars: ✭ 13 (-83.54%)
Mutual labels:  bigtable
google-bigtable-postgres-fdw
Google Bigtable Postgres FDW in Rust
Stars: ✭ 37 (-53.16%)
Mutual labels:  bigtable
beaker
A distributed, transactional key-value store.
Stars: ✭ 63 (-20.25%)
Mutual labels:  distributed-database
shared-docs
Shared Markdown Documents from Uber Engineering
Stars: ✭ 12 (-84.81%)
Mutual labels:  uber

This is an open-source, MIT-licensed implementation of Uber's Schemaless (immutable BigTable-style sharded RDBMS).

This is only a learning project and not production ready.

The github issues list describes what has been intentionally left unimplemented and what differences there are between this implementation and Uber's (based on the materials linked at the end.)

All code is in Go.

API SUPPORTED

Get(ctx context.Context, tableName, rowKey, columnKey string, refKey int64) (cell models.Cell, found bool, err error)

GetLatest(ctx context.Context, tableName, rowKey, columnKey string) (cell models.Cell, found bool, err error)

PartitionRead(ctx context.Context, tableName string, partitionNumber int, location string, value int64, limit int) (cells []models.Cell, found bool, err error)

FindPartition(tblName, rowKey string) (int, error) 

Put(ctx context.Context, tableName, rowKey, columnKey string, refKey int64, jsonBody string) (err error)

ResetConnection(ctx context.Context, key string) error

Destroy(ctx context.Context) error

DATABASE SUPPORT

For learning or other:

* SQLite

For more serious testing and usage:

* MySQL

* Postgres

DISCLAIMER

I do not work for Uber Technologies.

VIDEOS

"Taking Storage for a Ride With Uber", https://www.youtube.com/watch?v=Dg76cNaeB4s (30 mins)

"GOTO 2016 • Taking Storage for a Ride", https://www.youtube.com/watch?v=kq4gp90QUcs (1 hour)

ARTICLES

"Designing Schemaless, Uber Engineering’s Scalable Datastore Using MySQL"

https://eng.uber.com/schemaless-part-one/ - "Part One"

https://eng.uber.com/schemaless-part-two/ - "Part Two"

https://eng.uber.com/schemaless-part-three/ - "Part Three"

https://eng.uber.com/schemaless-rewrite/ - "Code Migration in Production: Rewriting the Sharding Layer of Uber’s Schemaless Datastore"

https://eng.uber.com/mezzanine-codebase-data-migration/ - "Project Mezzanine: The Great Migration"

OTHER RESOURCES

https://backchannel.org/blog/friendfeed-schemaless-mysql - FriendFeed's original design

https://engineering.pinterest.com/blog/sharding-pinterest-how-we-scaled-our-mysql-fleet - Pinterest's original design

https://martinfowler.com/articles/schemaless/ - Martin Fowler's slides on Schemaless Data Structures

SIMILAR OPEN-SOURCE WORK

https://github.com/hoteltonight/shameless - A similar append-only data store in Ruby influenced by Schemaless.

https://github.com/dgryski/go-shardedkv - Much of the implementation is a derivative of this work.

THANKS

To Damian Gryski for releasing https://github.com/dgryski/go-shardedkv

To Uber Technologies for releasing numerous materials on the design and implementation of Mezzanine, their Schemaless store.

To John Rinehart for NixOS support.

To Simon Dassow for Postgres debugging and support.

And to many others :)

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].