= Your data in a NoSQL database :nav-title: NoSQL database :description: Ulabase stores your data as JSON documents, the shape your app already works with: no tables to design, no migrations, no joins to rebuild an object. :keywords: NoSQL backend, document database, JSON database, backend as a service NoSQL, MongoDB backend, schemaless database :group: Why Ulabase :order: 16 A NoSQL database stores data as documents, such as JSON objects. Ulabase stores your data this way. Most backends of this kind, Supabase among them, run on a SQL database, which stores data in tables. == The cost of tables Take an order with three lines. Your app holds it as one object. A SQL database splits it into two tables, `orders` and `order_lines`, linked by a key, and the app joins them back on every read. Every new field is a migration. You change the table, run the change on every database, and update the code that turns rows into objects. At the start of an app its data changes every week, and this work comes back every week. == One object, one document In a NoSQL database the order is one document, with its lines inside it. The app saves the object as it is and reads it back the same way. A new field is a new key. The next document has it, and the documents written before stay as they are. There is no migration to run and no mapping code to update. What you get: * **Faster changes.** The shape of your data changes in the app code, and the database stores what the app sends. * **Rules when you want them.** A xref:schemas.adoc[schema] makes the service refuse a document that does not match, on the collections where you want it. * **One database for everything.** Reports with xref:aggregations.adoc[aggregations], live updates with xref:change-streams.adoc[change streams], and search by meaning with xref:auto-embeddings.adoc[vectors] work on the same documents. == Under the hood The database is MongoDB Atlas, the cloud service run by MongoDB, the company that makes the database. Atlas keeps three copies of your data on separate servers, so a server that fails does not stop your service, and it encrypts the data on disk. On Starter and Pro it is also backed up every day. On Enterprise it can be a MongoDB of yours, on Atlas or elsewhere: see xref:custom-mongodb.adoc[Your own MongoDB]. Your app reaches it over REST, GraphQL and WebSocket. See xref:managing-data.adoc[Collections and documents].