NoSQL Concepts: Document Databases

NoSQL Concepts: Document Databases

Document Databases

  • Schemaless
  • Store data in documents and these documents are grouped into collection
  • If you are familiar with relational databases we can say documents are analogous to rows and collections are analogous to table

Documents

  • Set of key-value pairs
  • Key: string
  • Value: number, string, booleans, arrays, objects
  • Polymorphic model it's means that documents within the same collection don't needt to have the same structure
  • Formats: JSON, BSON, YAML, XML

JSON document format

{  
  "user_id": 512,
  "name": "Carol", 
  "last_name": "Harper",
  "email": "carolharper@datazy.com",
  "address": { 
  "street": "123 Sesame Street",
  "city": "New York City", 
  "state": "New York",  
  "country": "USA"  },
  "hobbies": [   
  "hiking", "painting"
  ]
}

The value of "address" key is another document, notice that is related information is embedded in the main document, so don't need for searching about address in another document

Collections

  • Set of documents
  • Store the same type of entities

Advantages of document databases

  • Flexibility
    • Don't need to predefine the schema
    • Documents can vary over time => avoid schema migrations
    • Embedded documents => avoid joins
  • Intuitive for developers

    • Natural way to work
    • JSON is human-readable
    • Documents map objects in code
  • Horizontal scalability

Limitations of document databases

  • More responsibility
    • Care about data in the application code
    • Care about redundant data

The most popular document databases is "Mongo DB"