This section compares DocumentDB with other (non-)SQL technologies. The comparison is made with MongoDB and Azure Table storage.
Table storage is a non-SQL tabular based storage mechanism enabling you to store rows and columns inside a table. A table is not fixed, meaning that different rows can have different columns. Azure Table storage is a perfect fit for storing large amounts of data, although it is non-relational. There are no mechanisms like foreign keys, triggers, or user-defined functions.
MongoDB is also a document database (NoSQL), which means that it is schema-free, enables high performance and high availability, and has the ability to scale. MongoDB is open source, and is built around documents and collections. The documents are compiled of sets of key-value pairs, while collections also contain documents. Compared to DocumentDB, MongoDB uses BSON instead of JSON.
The following table provides a high-level comparison on some key features:
Feature |
DocumentDB |
MongoDB |
Table storage |
---|---|---|---|
Model |
Document |
Document |
Rows and columns |
Database schema |
Schema-free |
Schema-free |
Schema-free |
Triggers |
Yes |
No |
No |
Server side scripts |
Yes, JavaScript |
Yes, JavaScript |
No |
Foreign keys |
*N/A |
N/A |
N/A |
Indexing |
Potentially on property |
Potentially on every property |
Partition key and row key only |
Transactions |
Yes, supports ACID |
No |
Limited, using batching |
Hosting |
On Microsoft Azure only, offered as a service |
Can be on-premise or on a virtual machine, not offered as a service |
On Microsoft Azure, offered as a service. |
DocumentDB does not offer referential integrity by design. There is no concept of foreign keys. Integrity can be enforced by using triggers and SPs.
The role of the Database Administrator is still needed to manage DocumentDB. We still need someone to overlook our databases and collections. Some common tasks a DBA for a document might perform are as follows: