What is your choice for NoSQL database?

MongoDB, Cassandra, DynamoDB and etc.

Also, do you use VM or container to run it?

2 Likes

Corresponding tweet for this thread:

Share link for this tweet.

2 Likes

Iā€™m currently working on a project using RavenDb.
For dev weā€™re running it in docker, for prod just using RavenDb Cloud
Took a while getting used to it coming from SQL with very little MongoDB experience, but now quite like it.

2 Likes

I just use PostgreSQL, including for nosql stuff, when I need some advanced features then it has it, without needing to add ā€˜yet anotherā€™ database of something else.

4 Likes

Yep, tbh Postgres has everything we need, from GeoJSON to just JSON support with good support for querying inside the JSON.

Iā€™ve to work with Mongo for one of my clients, I just want to leave this world each time Iā€™ve to interact with Mongo.

But it seems that SurrealDB is good. Iā€™ve never tried tho.

3 Likes

What is the biggest problem with MongoDB?
I saw replies that they use PostgreSQL instead (if possible).

2 Likes

I think itā€™s an issue with NoSQL.
No joints, not ACID, duplication of data, constraints on read rather on write.
Some NoSQL tries to solve this ā€œlackā€ of features.
I said lack with quotes because usually thatā€™s what youā€™re seeking for when choosing NoSQL.
The biggest pain point for me is querying, especially nested stuff. This drives me crazy.

Nevertheless, I go with PG as default, if I need to store JSON, Iā€™ll go for JSONB in PG. Same for GeoJSON, Iā€™ll use PostGIS, etc.
Thought it doesnā€™t support sharding, but thereā€™s other way to get this mechanism in SQL.

Iā€™ve used DynamoDB to act like an event store, same goes for Firebase.

At work weā€™ve a MongoDB database, with Rails backend, the thight coupling beteween MongoDB and the models make the migration task almost impossible, or weā€™ll have to cut the development of any feature during 6 months or moreā€¦

3 Likes

We were initially using CouchDB for a year or two, then we move to CouchServer. Its replication capabilities is what we like the most.

2 Likes

Weā€™re on Azure, and we are using CosmosDB.

2 Likes

Plus PostgreSQL is pluggable, if you need some extremely fast KV storage or document storage or so you can use PGSQL straight, but you can also install a plugin for, say, a new table type that has that nosql speed for that specific type of data, all within the same system and no changes to your code. There is really no reason to use anything but postgresql unless you want easier and faster transparent scaling or so (and pgsql is really good at scaling now too, just has to be a bit more planned in comparison, but its vastly easier than itā€™s ever been before)

3 Likes

Iā€™d say PG too if you really need itā€¦ just ask yourself whether you do or not :upside_down_face:

Welcome back ODL :partying_face:

3 Likes

If I start a project from scratch, this is also the way Iā€™d choose

Btw: If someone likes experimenting:
https://newdatabase.com/en/default.html

2 Likes

I choose Postgres as the default. The only reason to look for something else is when Postgres does not solve a specific problem well. I have put JSON documents in Postgres, and it works great.

Problems that Postgres did not solve well:

  1. My dev team inherited search functionality. V1.0 of that ran on Postgres back in the day. Doing a full-text search across millions of records on multiple data types and fields did not perform well. We are now using Elasticsearch (decision was made before I joined but I am in full support). There is a steep learning curve, but it solves the problem well and performs well.
  2. My dev team inherited access control. The V1.0 tried to prepare for as flexible of a future as possible and wrote one Postgres row per ā€œAccessible Resourceā€ per user with access to the resource, even if the user received access through their group. This meant we had many customers with billions of database rows for their customer team. This meant that a large enterprise customer could re-structure their groups and create the need for us to update a cool 1-billion database rows. Postgres did not handle this well. We ultimately fixed it by removing the not-yet-needed flexibility and writing a Postgres row per ā€œAccessible Resourceā€ per group with access. But eventually, if we want to build a Google Docs-style access control system, where we have infinite flexibility to grant access to a single individual or a group or everyone, or a combination of the two, we will need a different database. Cassandra would be where I would start looking, but I have not worked with it, and I would need to do some research before settling on anything.
3 Likes

My vote goes to PG as well :003:

3 Likes

I didnā€™t know that you can use PostgreSQL as a NoSQL database. I know it can store JSON, but I didnā€™t know it has that full functionality of a NoSQL db.

2 Likes

I donā€™t worked with nosql databases. But in one time I studied the types of databases. And prefer for future my projects use mongodb or redis.

1 Like