Azure Cosmos DB

Azure Cosmos DB is a globally distributed database service designed to enable you to elastically and independently scale throughput and storage across any number of geographical regions with comprehensive SLAs. You can develop document, key/value, or graph databases with Cosmos DB using a series of popular APIs and programming models.

SQL API:
With the SQL API, Azure Cosmos DB provides rich and familiar SQL query capabilities with consistent low latencies over schema-less JSON data. In this article, we provide an overview of the Azure Cosmos DB’s SQL API, and how to best use the API.

Gremlin API:
Azure Cosmos DB provides the Gremlin API for graph modeling and traversal, along with turn-key global distribution, elastic scaling of storage and throughput, and low latency.

Cassandra API
Azure Cosmos DB supports the Cassandra API. This means that by using existing drivers, your application written for Cassandra can now communicate with Azure Cosmos DB instead of Apache Cassandra/Datastax Enterprise databases, and gain benefits like global distribution and elastic scale.

MongoDB API:
Azure Cosmos DB supports the MongoDB API. This means that by using existing drivers, your application written for MongoDB can now communicate with Cosmos DB instead of MongoDB databases, and gain benefits like global distribution & elastic scale.

Table API:
Azure Cosmos DB provides the Table API for key-value workloads. This provides a premium experience for Azure Table storage with secondary indexes, global distribution, low latency, and dedicated throughput.

How can we improve Azure Cosmos DB?

You've used all your votes and won't be able to post a new idea, but you can still search and comment on existing ideas.

There are two ways to get more votes:

  • When an admin closes an idea you've voted on, you'll get your votes back from that idea.
  • You can remove your votes from an open idea you support.
  • To see ideas you have already voted on, select the "My feedback" filter and select "My open ideas".
(thinking…)

Enter your idea and we'll search to see if someone has already suggested it.

If a similar idea already exists, you can support and comment on it.

If it doesn't exist, you can post your idea so others can support it.

Enter your idea and we'll search to see if someone has already suggested it.

  • Hot ideas
  • Top ideas
  • New ideas
  • My feedback
  1. [CosmosDB] Be able to manage Backup and Restore with Portal and APIs

    Please provide the ability to manage backup and restore on our own.

    Restore through support is not clear and inconvenient.

    It turned out restore is only available through paid support plan.

    This document https://docs.microsoft.com/en-us/azure/cosmos-db/online-backup-and-restore#restoring-a-database-from-an-online-backup does not say it in any word.

    The situation made our customer extremely unhappy.

    294 votes
    Vote
    Sign in
    (thinking…)
    Password icon
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    6 comments  ·  Flag idea as inappropriate…  ·  Admin →
  2. connection string

    Support for DotNet library constructor of DocumentClient taking "Connection string", not the "Uri endpoint + string authKey"similar to other implementations of DocumentDB, or similar to Azure.Storage

    274 votes
    Vote
    Sign in
    (thinking…)
    Password icon
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    5 comments  ·  Flag idea as inappropriate…  ·  Admin →
  3. Implement a graphql provider

    graphql {http://graphql.org/} is becoming increasingly adopted by front end frameworks (including mobile) for querying backend / API data.

    Rather than having to translate each graphql query into a DocumentDB client call it would be optimal and very powerful to issue the query directly.

    It would also provide enhanced query abilities over the existing REST approach.

    274 votes
    Vote
    Sign in
    (thinking…)
    Password icon
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    11 comments  ·  Gremlin API  ·  Flag idea as inappropriate…  ·  Admin →
  4. Support the CouchDB replication protocol

    Support the CouchDB replication protocol so that we can sync with PouchDB or Couchbase Lite NoSQL databases on mobile devices for superior online / offline capabilities.

    226 votes
    Vote
    Sign in
    (thinking…)
    Password icon
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    5 comments  ·  Flag idea as inappropriate…  ·  Admin →
  5. Integrate with Azure Active Directory

    Really need to be able to set resource level access control integrated with Azure Active Directory. The current built-in user / resource access control is a pain to use and we end up with just using the master key and giving everyone access to everything.

    Azure SQL DB already has this, and is a pleasure to work with.

    Perhaps you should take a leaf from your sister team on this -

    https://docs.microsoft.com/en-us/azure/sql-database/sql-database-control-access-aad-authentication-get-started

    200 votes
    Vote
    Sign in
    (thinking…)
    Password icon
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    5 comments  ·  Flag idea as inappropriate…  ·  Admin →
  6. Built-in OAuth support

    Support OAuth to make it easy for mobile clients to securely talk directly to DocumentDB without a middle tier or a separate resource token broker.

    200 votes
    Vote
    Sign in
    (thinking…)
    Password icon
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    11 comments  ·  Flag idea as inappropriate…  ·  Admin →
  7. Support Gremlin APIs on Cosmos DB Emulator

    The Cosmos DB Emulator currently does not support the Gremlin API. So at the moment it is not possible to test against the emulator using the Gremlin Console (http://tinkerpop.apache.org/docs/3.2.5/tutorials/the-gremlin-console/)

    180 votes
    Vote
    Sign in
    (thinking…)
    Password icon
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    8 comments  ·  Gremlin API  ·  Flag idea as inappropriate…  ·  Admin →
  8. Add Change Feed support to MongoDB API

    Presently leveraging Azure Functions via Cosmos Change Feed is not an option if you use the MongoDB API. Any immediate plans to implement this?

    168 votes
    Vote
    Sign in
    (thinking…)
    Password icon
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    2 comments  ·  MongoDB API  ·  Flag idea as inappropriate…  ·  Admin →
  9. Support filters (queries) on the Change Feed

    For some advanced scenarios and for performance reasons, support filters (queries) on the Change Feed

    149 votes
    Vote
    Sign in
    (thinking…)
    Password icon
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    3 comments  ·  Flag idea as inappropriate…  ·  Admin →
  10. support COUNT of a query on a partitioned collection

    db.collection.count() works just find but when attempting to count a filtered down collection db.collection.find({query...}).count() results in an Operation Failure that says 'query in command must target a single shard key' but need to be able to do counts across multiple partitions

    147 votes
    Vote
    Sign in
    (thinking…)
    Password icon
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    19 comments  ·  MongoDB API  ·  Flag idea as inappropriate…  ·  Admin →
  11. Better handling of "request limit too large"

    Here (https://docs.microsoft.com/en-us/azure/cosmos-db/performance-tips) you can see that when you have exceeded your RU/s quota, Cosmos DB will respond with HTTP Status 429 with an HTTP header x-ms-retry-after-ms telling you when you can make the next request. It also says that the request will be retried automatically, if you use the SQL API.

    For the MongoDB API, requests will not be retried automatically and there is nothing telling the user how long to wait before retrying. Instead you have to catch a MongoCommandException, look at the Code property for 16500 and guess when to retry,

    I'd like the same support…

    142 votes
    Vote
    Sign in
    (thinking…)
    Password icon
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    1 comment  ·  MongoDB API  ·  Flag idea as inappropriate…  ·  Admin →
  12. Support for transactions via Mongo 4.0 API

    Mongo 4.0 incl transactions has been released: https://www.mongodb.com/transactions.
    CosmosDB should support Mongo 4.0 API (including transactions)

    136 votes
    Vote
    Sign in
    (thinking…)
    Password icon
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    3 comments  ·  MongoDB API  ·  Flag idea as inappropriate…  ·  Admin →
  13. add DocumentDB to the "azure stack"

    Azure Stack is a great Microsoft vision to allow running Azure applications on premise...
    but DocumentDB support is mandatory (unless Microsoft want to push MongoDB version 3)

    119 votes
    Vote
    Sign in
    (thinking…)
    Password icon
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    6 comments  ·  Flag idea as inappropriate…  ·  Admin →
  14. EventGrid publisher for CosmosDB

    Instead of, or in addition to, the existing ChangeFeed please publish changes to Event Grid.

    This shud be mngt ops like DB create, collection create etc.
    AND changes to documents, including deletes.

    119 votes
    Vote
    Sign in
    (thinking…)
    Password icon
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    8 comments  ·  Flag idea as inappropriate…  ·  Admin →
  15. Make COUNT() aware of indexes

    Queries with COUNT() or other aggregates are very expensive and all appear to be scan driven vs. index driven.

    I have 50k documents in collection, each has "Type" property with string value. The indexing policy is default.

    The following simple query consumes 615 RUs:
    SELECT VALUE COUNT(1) FROM x WHERE x.Type ='Content'

    The result is 9738 records.

    The query metrics are:
    RetrievedDocumentCount: 9738
    RetrievedDocumentSize: 69506571
    OutputDocumentCount: 1
    OutputDocumentSize: 53
    IndexHitDocumentCount: 0
    IndexHitRatio: 0

    So what we see is that database reads all "Contents" and than counts them. But it's enough to just count the index entries not to read all…

    114 votes
    Vote
    Sign in
    (thinking…)
    Password icon
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    1 comment  ·  SQL API  ·  Flag idea as inappropriate…  ·  Admin →
  16. Gremlin queries from stored procedures

    It would be nice to have the ability to execute Gremlin queries against the Graph API from a stored procedure. Ideally, this would also enable transactions.

    105 votes
    Vote
    Sign in
    (thinking…)
    Password icon
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    4 comments  ·  Gremlin API  ·  Flag idea as inappropriate…  ·  Admin →
  17. Support for W3C SPARQL as a query language

    SPARQL is a mature W3C standard for querying and updating graph-like data with well defined semantics and rich query capabilities.

    http://en.m.wikipedia.org/wiki/SPARQL

    103 votes
    Vote
    Sign in
    (thinking…)
    Password icon
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    4 comments  ·  Gremlin API  ·  Flag idea as inappropriate…  ·  Admin →
  18. Sub-collections for multi-tenant applications

    In a multi tenant environment it is absolutely essential to limit results only to documents that belong to the current tenant. Adding a tenant name property to every document is not good enough because developers must ALWAYS remember to filter queries by that property. If they forget to do that the results can be devastating. It is also not possible to prevent that with tests.

    To use a separate collection for each tenant is too expensive with the current pricing structure.

    Please enable a possibility to add sub-collections that would act as a query boundary. They should also be a…

    102 votes
    Vote
    Sign in
    (thinking…)
    Password icon
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    7 comments  ·  Flag idea as inappropriate…  ·  Admin →

    Thank you for your suggestion. This is not currently on our road map.

    As suggested by others, customers are implementing this pattern using the same container with a partition key per tenant or a synthetic key with the tenant id and one or more other properties.

    Will mark this as unplanned and leave open and will revisit this in future planning cycles.

    Thank you for your suggestion and votes.

  19. I want to be able to create an Azure Cosmos Account that supports multiple APIs

    Since Cosmos DB with the Mongo API does not support all Mongo commands, I would like to be able to configure Cosmos DB accounts to support multiple apis (e.g. Mongo and Sql/DocumentDB) as described here: https://stackoverflow.com/questions/44247726/is-there-a-way-to-configure-cosmosdb-to-use-both-the-sql-documentdb-and-mongod

    99 votes
    Vote
    Sign in
    (thinking…)
    Password icon
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    7 comments  ·  Flag idea as inappropriate…  ·  Admin →

    Azure Cosmos DB is a multi-model database service, and therefore supports accessing the same underlying data using any/all APIs. We are however implementing some platform-level changes to make data access from different APIs seamless like supporting conversions between disparate type systems, and capabilities.

  20. Add DateTimeOffset support

    The DocumentDb engine should be able to recognize and properly order DateTimeOffset serialized fields.

    93 votes
    Vote
    Sign in
    (thinking…)
    Password icon
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    1 comment  ·  SQL API  ·  Flag idea as inappropriate…  ·  Admin →
  • Don't see your idea?

Azure Cosmos DB

Feedback and Knowledge Base