philippgille / gokv

Simple key-value store abstraction and implementations for Go (Redis, Consul, etcd, bbolt, BadgerDB, LevelDB, Memcached, DynamoDB, S3, PostgreSQL, MongoDB, CockroachDB and many more)
Mozilla Public License 2.0
724 stars 68 forks source link

Add implementation for Azure Cosmos DB #41

Open philippgille opened 5 years ago

philippgille commented 5 years ago

Azure Cosmos DB is described as "multi model" database, supporting the MongoDB API, Cassandra API, SQL queries, Gremlin (graph), and Azure Table Storage API.

Cosmos DB is the counterpart to AWS DynamoDB, but the "multi model" seems to be unique.

Microsoft describes Azure Table Storage as "NoSQL key-value store", so maybe that's the best API to work with (see here).

General info:

Implementation info:

philippgille commented 5 years ago

Local emulator doesn't work for the Table Storage API: https://github.com/MicrosoftDocs/azure-docs/blob/9c7620c427e85c7bc00d755552b053aa135e0607/articles/cosmos-db/local-emulator.md#differences-between-the-emulator-and-the-service

But it seems there's one for Table Storage: https://github.com/MicrosoftDocs/azure-docs/blob/92929d4339f0fc2de52c39b827188e7a435a2b6d/articles/storage/common/storage-use-emulator.md#differences-for-table-storage

For running the emulator on Linux (required for Travis CI), Microsoft suggests to use an open source emulator: https://github.com/azure/azurite