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. Add Group By support for Aggregate Functions

    We're really happy about the new aggregate functions that recently were announced. But without Group By support they fall short and will leave many disappointed. Please add Group By support as well.

    2,584 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: oidc
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    61 comments  ·  SQL API  ·  Flag idea as inappropriate…  ·  Admin →
  2. Set based operations (INSERT, UPDATE, DELETE)

    It would be nice to be able to update parts of documents, delete documents, and insert documents using set based operations, similar to SQL.

    e.g.
    UPDATE Users SET IsActive = 0 WHERE LastLogin < '2010-01-01'
    DELETE FROM Users WHERE LastLogin < '2009-01-01'
    INSERT INTO table2 SELECT * FROM table1

    855 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: oidc
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    7 comments  ·  SQL API  ·  Flag idea as inappropriate…  ·  Admin →

    There are multiple responses to this suggestion.

    Support for SQL-like syntax for UPDATE, DELETE and INSERT INTO are not on our road map at this time.

    However, the underlying functionality for an UPDATE, SET is essentially a PATCH. This functionality we are actively working on. See this User Voice item here to track for future updates. https://feedback.azure.com/forums/263030-azure-cosmos-db/suggestions/6693091-be-able-to-do-partial-updates-on-document

    Thank you for your suggestion.

  3. Implement LIKE keyword

    Add support for the LIKE '%%' SQL keyword and associated functionality.

    717 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: oidc
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    31 comments  ·  SQL API  ·  Flag idea as inappropriate…  ·  Admin →
  4. Cosmos DB BulkExecutor for .NET Core

    I would like Azure Cosmos DB BulkExecutor library for .NET Core compatible version.

    Recent application often uses Microsoft.Azure.DocumentDB.Core package, so the need for the .NET Core version is high.

    333 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: oidc
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    7 comments  ·  SQL API  ·  Flag idea as inappropriate…  ·  Admin →
  5. Support ORDER BY on the ST_DISTANCE spatial function

    Ordering results by the ST_DISTANCE spatial function is currently not supported.

    309 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: oidc
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    13 comments  ·  SQL API  ·  Flag idea as inappropriate…  ·  Admin →
  6. 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…

    128 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: oidc
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    1 comment  ·  SQL API  ·  Flag idea as inappropriate…  ·  Admin →
  7. Add DateTimeOffset support

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

    113 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: oidc
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    2 comments  ·  SQL API  ·  Flag idea as inappropriate…  ·  Admin →
  8. Support case insensitive indexing

    Order by returns lowercase characters before uppercase characters.

    x
    y
    z
    A
    B
    C

    I know you can work around this by storing an all lower or all upper case version of the string you want to query by on your object but over time and scale that does add to your RU usage

    82 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: oidc
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    4 comments  ·  SQL API  ·  Flag idea as inappropriate…  ·  Admin →
  9. Support multiple collections in stored procedures

    Currently CosmosDB Stored procedures only allow access to a SINGLE collection (because they seem to be scoped to collections rather than to the database), via getContext() :

    var collection = getContext().getCollection();

    But any "useful" / "real-life" application using ComosDB will typically have to interact with more than one collection. For example, it is currently IMPOSSIBLE to insert documents into two distinct collections within a database using a single stored procedure -- a VERY SERIOUS drawback / limitation.

    I would propose that stored procedures be scoped to the database level and then we would be allowed to do something like:

    var…

    78 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: oidc
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    3 comments  ·  SQL API  ·  Flag idea as inappropriate…  ·  Admin →
  10. Deploy Stored Procedures from Source Control

    It would be great if we could deploy sprocs from visualstudio.com as we can with Azure Functions or Azure Web Sites.

    69 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: oidc
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    4 comments  ·  SQL API  ·  Flag idea as inappropriate…  ·  Admin →
  11. Order By Null Handling

    Currently if you do an order by on a nullable value, the documents are not returned at all. Please add functionality similiar to Application Insights where you can specify if the documents with the null value appear at the beginning or end of the sort.

    63 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: oidc
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    2 comments  ·  SQL API  ·  Flag idea as inappropriate…  ·  Admin →
  12. Support OrderBy and OrderByDescending in Nested Arrays

    For example in a document structure such as:

    {
    "id": "some id",
    "things": [
    { "value": "5" },
    { "value": "2" },
    { "value: "7" }
    ]
    }

    It would be great to be able to do something like:

    queryable.Select(x => x.Things.OrderByDescending(y => y.Value)).AsEnumerable.FirstOrDefault();

    60 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: oidc
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    3 comments  ·  SQL API  ·  Flag idea as inappropriate…  ·  Admin →

    This is something we have on our backlog and eventually plan to implement this but it is not on our short-term plan. Will mark this as under review for now as we will continue to review the comments and votes on this issue as we revisit feedback.

    Thanks for your request.

  13. The ability to reference JavaScript libraries (e.g. underscore) within server-side scripting

    It'd be nice to be able to reference javascript libraries within server-side scripting. Something like an AMD or RequireJS loader.

    For example:
    var _ = require('lodash');

    50 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: oidc
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    4 comments  ·  SQL API  ·  Flag idea as inappropriate…  ·  Admin →
  14. stored procedures & functions in .NET (C#)

    Would be great to have the option to implement stored procedures, functions and triggers in .NET (C#) as well.

    46 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: oidc
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    2 comments  ·  SQL API  ·  Flag idea as inappropriate…  ·  Admin →
  15. Use Json.Net contract resolver when using Linq to generate SQL queries

    Member names in SQL queries generated from Linq currently look at the member for either a JsonPropertyAttribute or DataMemberAttribute. If the ability to specify custom JsonSerializerSettings is implemented (see http://feedback.azure.com/forums/263030-documentdb/suggestions/6422364-allow-me-to-set-jsonserializersettings ), this will need to be implemented to actually remove the need to annotate every member of your data object classes.

    34 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: oidc
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    1 comment  ·  SQL API  ·  Flag idea as inappropriate…  ·  Admin →
  16. Improve scaling down experience: remove redundant physical partitions

    During initial import we increased RU to 200K. Cosmos Db SQL API created 20 physical partitions with 10K throughput each.
    During regular day we just need 30K Ru. That would mean each physical partition would have only 1,5K RU allocated and a lot of redundant partitions with possible expensive cross-partition calls (total data size is less than 30GB)

    Is there way to decrease amount of physical partitions to reasonable value?
    In a nutshell it is not fair pricing, when you are limited to 1,5K RU and a lot of cross-partition calls you have to pay extra

    33 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: oidc
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    3 comments  ·  SQL API  ·  Flag idea as inappropriate…  ·  Admin →
  17. Filtered unique indexes

    I need my unique indexes to work when a soft delete flag is set to zero so that only the active records will participate in the uniqueness constraint per partition. This also makes it easier to determine deleted records in the Change Feed.

    23 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: oidc
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  SQL API  ·  Flag idea as inappropriate…  ·  Admin →
  18. DocumentDB driver/package for R

    There is one for MySQL. Not sure how hard it would be to build one for DocumentDB.

    17 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: oidc
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    1 comment  ·  SQL API  ·  Flag idea as inappropriate…  ·  Admin →
  19. monitor and kill queries

    Add ability to monitor (ie. see SQL query) and kill long running user queries from within Data Explorer.

    14 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: oidc
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    3 comments  ·  SQL API  ·  Flag idea as inappropriate…  ·  Admin →
  20. Allow us to define global unique keys across all partitions

    Unique keys are scoped to partitions, but this makes it challenging to store data that's supposed to be globally unique like email address or mobile number. I ended up creating a traditional SQL Server table for this, but I'd like to migrate it to Cosmos DB.

    12 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: oidc
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    1 comment  ·  SQL API  ·  Flag idea as inappropriate…  ·  Admin →
← Previous 1
  • Don't see your idea?

Azure Cosmos DB

Feedback and Knowledge Base