Well, I want to build a large-scale project, but I do not know which ORDBMS to choose. The app should handle real-time operations, not chatting, but things like future scheduling or reminders. It should be also really secure, fast and easy to use. And last but not least, should I use them both. I mean PostgreSQL with Python / Django and MongoDB with Node.js? Or would it be better to use PostgreSQL with Node.js?
*The project is going to use React for the front-end and GraphQL is going to be used for the API.
Thank you all. Any answer or advice would be really helpful!
My data was inherently hierarchical, but there was not enough content in each level of the hierarchy to justify a relational DB (SQL) with a one-to-many approach. It was also far easier to share data between the frontend (Angular), backend (Node.js) and DB (MongoDB) as they all pass around JSON natively. This allowed me to skip the translation layer from relational to hierarchical. You do need to think about correct indexes in MongoDB, and make sure the objects have finite size. For instance, an object in your DB shouldn't have a property which is an array that grows over time, without limit.
In addition, I did use MySQL for other types of data, such as a catalog of products which (a) has a lot of data, (b) flat and not hierarchical, (c) needed very fast queries.
We Have thousands of .pdf docs generated from the same form but with lots of variability.
We need to extract data from open text and more important - from tables inside the docs.
The output of Couchbase/Mongo will be one row per document for backend processing.
ADOBE renders the tables in an unusable form.
RethinkDB is built to store JSON documents, and scale to multiple machines with very little effort. It has a pleasant query language that supports really useful queries like table joins and group by, and is easy to setup and learn.
MongoDB stores data in JSON-like documents that can vary in structure, offering a dynamic, flexible schema. MongoDB was also designed for high availability and scalability, with built-in replication and auto-sharding.
Redis is an open source (BSD licensed), in-memory data structure store, used as a database, cache, and message broker. Redis provides data structures such as strings, hashes, lists, sets, sorted sets with range queries, bitmaps, hyperloglogs, geospatial indexes, and streams.
JSON data model and immediate consistency.;Distributed joins, subqueries, aggregation, atomic updates.;Secondary, compound, and arbitrarily computed indexes.;Hadoop-style map/reduce.;Friendly web and command-line administration tools.;Takes care of machine failures and network interrupts.;Multi-datacenter replication and failover.;Sharding and replication to multiple nodes.;Queries are automatically parallelized and distributed.;Lock-free operation via MVCC concurrency.