Get "PHP 8 in a Nuthshell" (Soon includes PHP 8.4)
Amit Merchant

Amit Merchant

A blog on PHP, JavaScript, and more

How Document-oriented Databases Store Data Similar to JSON Objects

JSON (JavaScript Object Notation) has many uses for developers. We have covered several applications of it on this site, such as deep copying objects using JSON.stringify and JSON.parse.

Data storage is another application of JSON, which is done through JSON objects. This file format and data interchange format store data in a very similar way to document-oriented databases. They can both store and retrieve data without much data mapping or transformation. In this article, we will examine what a document-oriented database is, its similarities with JSON objects, and several similar use cases.

What is a Document-oriented Database?

A document-oriented database is a NoSQL database where data is stored in binary document files. As explained in MongoDB’s guide to NoSQL databases, “Each document contains pairs of fields and values. The values can typically be a variety of types, including things like strings, numbers, booleans, arrays, or even other objects.”

A document database is a flexible data model best suited for semi-structured and typically unstructured data sets. These databases also support nested structures, which make it easy to represent complex relationships or hierarchical data.

Document-oriented databases are useful in web applications, content management systems, and other modern applications that require the ability to store and retrieve large amounts of structured and unstructured data.

Another benefit of document-oriented databases is that they are also compatible with applications that necessitate frequent updates and changes to the data schema. This is because they can easily accommodate modifications without changing the underlying structure.

How Document-oriented Databases Store Data Similar to JSON Objects

JSON is an open data interchange format that is both human and machine-readable. A JSON object is a collection of name-value (or key-value) pairs. An object is defined within left ({) and right (}) braces, and each name-value pair begins with the name, followed by a colon, and then the value.

Name-value pairs are comma-separated. JSON can store data in two ways: the whole object in a single document and parts of objects separately, and they can be linked using unique identifiers.

An article from the Global Tech Council on using JSON gave an example of the basic data storage structure of a JSON object.

{
    "name": "John Doe",
    "age": 35,
    "address": {
        "street": "123 Main St.",
        "city": "San Francisco",
        "state": "CA",
        "zip": 94102
    },
    "isEmployed": true
}

As per MongoDB, this is what a typical data storage structure from a document-oriented database will look like.

{
    "_id": "12345",
    "name": "foo bar",
    "email": "[email protected]",
    "address": {
        "street": "123 foo street",
        "city": "some city",
        "state": "some state",
        "zip": "123456"
    },
    "hobbies": [
        "music", 
        "guitar", 
        "reading"
    ]
}

As you can see, both JSON objects and document-oriented databases are text-based representations of structured data using JavaScript text, and both have key-value pairs and ordered lists.

In the MongoDB example, the keys are “_id”, “12345”, “name”, “email”, and “address”. The values are “12345”, “foo bar”, [email protected], and the address object that contains all the address fields respectively.

This is the same structure as the example from the Global Tech Council. The keys are “name” “age”, “address”, “street”, “city”, “state”, “Zip” and “isEmployed”. The values are “John Doe”, 35, “123 Main St.”, “San Francisco”, “CA”, “94102”, and “true” respectively. The colon symbol for both datasets separates the fields.

Because they similarly store data, document-oriented databases and JSON objects have similar advantages. One advantage is that both can store semi- and unstructured data. Document-oriented databases are often used to store unstructured data, such as emails or social media posts, while JSON objects are often used to transfer data between systems.

JSON objects are also often used to store and transmit data in web applications. Both databases are also highly adaptable to other applications. JSON can be used with applications like Laravel, especially with large JSON files. For those interested, we also have a handy File method to read JSON files in Laravel 10.x.

Another similarity is storage flexibility. In a document-oriented database and a JSON object, each piece of data is handled as an individual object, and there is no fixed schema, which means you can store each document in the way it can be most easily retrieved and viewed.

This also allows the data to be adapted to your changing application requirements. Because both have no flexible schema, they can scale vertically and horizontally. This makes them suitable for storing huge volumes of data and other big data.

Document-oriented databases and JSON objects are highly efficient and can store different datasets in a similar manner. This makes them both highly adaptable for developers working across applications. For more use cases on storing data and using JSON, do go through our different subsections.

Like this article?

Buy me a coffee

👋 Hi there! I'm Amit. I write articles about all things web development. You can become a sponsor on my blog to help me continue my writing journey and get your brand in front of thousands of eyes.

Comments?