| ▲ | WhitneyLand a day ago | |||||||||||||||||||||||||||||||||||||||||||||||||
Why do people say document database when they really just mean json database? | ||||||||||||||||||||||||||||||||||||||||||||||||||
| ▲ | QuantumNomad_ a day ago | parent | next [-] | |||||||||||||||||||||||||||||||||||||||||||||||||
The 1st edition CouchDB book from 2010 explained it like this: > We write software to improve our lives and the lives of others. Usually this involves taking some mundane information—such as contacts, invoices, or receipts—and manipulating it using a computer application. CouchDB is a great fit for common applications like this because it embraces the natural idea of evolving, self-contained documents as the very core of its data model. > Self-Contained Data > An invoice contains all the pertinent information about a single transaction—the seller, the buyer, the date, and a list of the items or services sold. As shown in Figure 1, “Self-contained documents”, there’s no abstract reference on this piece of paper that points to some other piece of paper with the seller’s name and address. Accountants appreciate the simplicity of having everything in one place. And given the choice, programmers appreciate that, too. > Yet using references is exactly how we model our data in a relational database! Each invoice is stored in a table as a row that refers to other rows in other tables—one row for seller information, one for the buyer, one row for each item billed, and more rows still to describe the item details, manufacturer details, and so on and so forth. https://guide.couchdb.org/editions/1/en/why.html Iow, a document database stands in contrast to a relational db in that these JSON things we store in them are more stand-alone “documents” compared to storing data in rows and columns in a relational db like PostgreSQL or SQLite. | ||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||
| ▲ | Calavar a day ago | parent | prev | next [-] | |||||||||||||||||||||||||||||||||||||||||||||||||
It's a MongoDBism. The MongoDB community used document to mean the nonrelational equivalent of a row in a relational database. But over time there was definitional shift, and now it means a JSON blob, even if that blob is in a relational database. | ||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||
| ▲ | somat a day ago | parent | prev | next [-] | |||||||||||||||||||||||||||||||||||||||||||||||||
The "document" is sort of the native data type, Put everything in a big hierarchical structure, It is very flexible but analytics across the set can suffer. "relational" is another way to store data, break your big hierarchy into sets of related rows and store the rows as a table, If I were to describe it in geometric terms where the document is a report on a paper, the relation is a vertical slice through a stack of those reports. This is slightly non-intuitive but provides for interesting analysis opportunities. But nothing prevents you from treating your relational database as a document database, set it up as a key-value store where each key is is the document title and each value is a large blob of document data. If your documents are fairly consistent it is also easy enough to build indexes and query features to regain some of the analytical ability of relational data. | ||||||||||||||||||||||||||||||||||||||||||||||||||
| ▲ | petcat a day ago | parent | prev | next [-] | |||||||||||||||||||||||||||||||||||||||||||||||||
JSON is just a textual representation of the internal data structures. | ||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||
| ▲ | da_chicken a day ago | parent | prev | next [-] | |||||||||||||||||||||||||||||||||||||||||||||||||
I think it originates with the early web. JSON being a replacement for XML, and "document" being the general description for the response to a web server. | ||||||||||||||||||||||||||||||||||||||||||||||||||
| ▲ | bitwize a day ago | parent | prev [-] | |||||||||||||||||||||||||||||||||||||||||||||||||
1) The internal or wire representation of data from document DBs isn't necessarily JSON, though it's normally converted to such. 2) "Document" has undergone a bit of semantic drift thanks to HTML and XML. In an informational context it means "structured, hierarchical unit of data containing mostly text". The data from forms, invoices, and the like needs to be collected and stored, even if it isn't properly normalized and relationalized (or is en route to being such) so a "document database" is thought to be suited to this task I dunno, whatever, I'm in the "just fucking use postgres until you can justify why you shouldn't" camp. | ||||||||||||||||||||||||||||||||||||||||||||||||||