sarat1669

sarat1669

Alternatives for MongoDB?

I wanted to know which NoSQL databases offer official clients for elixir/erlang?
We currently have mongo as our database and the application is written in JAVA. We are considering porting it to elixir, but since mongo driver for elixir isn’t mature enough, we are looking for an alternative.
Which database are you using and what would you recommend?

First 10 of 19 Posts Switch mode

AstonJ

AstonJ

What are your requirements? And… any reason why you wouldn’t want to use Postgres?

_Also did you see the MongoDB adapters here: Packages | Hex

sarat1669

sarat1669 OP

We were having systems running on MySQL previously and chose mongo due to scalability issues. And postgres doesn’t natively provide sharding. I think postgres is more suited for read-heavy workloads. Our workloads are more write-heavy, so we chose Mongo.

I checked the adapters for mongo and most of them aren’t maintained anymore.

Also from the author of the package:

Ankhers

Ankhers

What features are you looking for from a mongo driver? There has been some improvement on it since I wrote that.

dimitarvp

dimitarvp

Have you checked the Basho products one of which is Riak, and it’s written in Erlang?

I am not affiliated but heard people praising them. Never had the chance to try any of their products so far though.

sarat1669

sarat1669 OP

Sorry, but I haven’t used the driver, so not aware of the current limitations (if any) I was going through the discussion on the previously mentioned thread and thought it wasn’t actively maintained.

sarat1669

sarat1669 OP

I think Riak is more of a Key-Value store than a NoSQL database. Also it is eventually consistent and doesn’t support atomic updates.

Ankhers

Ankhers

I’ll admit there hasn’t been much work done on the driver lately, the last commit was about a month ago, but it is still maintained. If you give it a look and there are some features that are not currently in there, just post an issue and we can probably get it sorted out.

outlog

outlog

what is the nature of the data? using postgres with GitHub - timescale/timescaledb: A time-series database for high-performance real-time analytics packaged as a Postgres extension · GitHub or GitHub - citusdata/citus: Distributed PostgreSQL as an extension · GitHub comes to mind.. admittingly I would think “normal” postgres is also up for the job..

that being said I would cautiously warn against changing both the DB and the App layer(to elixir I assume) at the same time.. but all depends on complexity etc. etc.

I would try and get something going using the old DB and Elixir (perhaps reverse proxy the Java app and then build out slowly.. Migrating from Rails to Elixir, bit by bit - #3 by outlog)

OvermindDL1

OvermindDL1

Yep, even raw-bog-standard PostgreSQL has fantastic nosql style storage with far more features than something like mongodb. Although I personally always question why someone thinks they need a nosql style storage, having a properly typed system is always far safer and often much faster. :slight_smile:

sarat1669

sarat1669 OP

The data has multiple objects which can be owned by multiple owners (sub-systems). A subsystem can replace the current object with a new object and assign its properties to different subsystems. The number of levels of the number of object is non-deterministic. It depends on the runtime inputs. And we also do a lot of scheduling based on priority, cost optimisation, etc on top of these subsystems. We have borrowed some concepts from FBP as well. I think modelling such kind of data in a traditional database isn’t a good idea.

Where Next?

Trending in Questions Top

jonnycharles
I’m in search of an Elixir library that offers PDF generation capabilities similar to Ruby’s Prawn. While there have been discussions abo...
New
spammy
I’m looking to build a personal workflow to quickly deploy web applications written in elixir/phoenix, for local consumption (ie not on t...
New
silverdr
Using Phoenix.LiveView.TagEngine as an EEx.Engine is deprecated! To compile HEEx, use Phoenix.LiveView.TagEngine.compile/2 instead. Sta...
New
dli
Before I dive in myself, did anyone successfully sprinkle Hologram into their existing LiveView app? Looking for hints regarding: Addi...
New
bottlenecked
Hi all, I wanted to ask how the community is dealing with post-release steps. Today we have Ecto migrations, which make sure that the db...
New
michallepicki
I am using Oban and occasionally, shortly after a deployment, a handful of jobs can fail because of dependency on other parts of the syst...
New
rahultumpala
Hello, I have an Elixir backend that implements a custom protocol over TCP. I want to load test the backend and assess the performance o...
New

Other Trending Topics Top

JesseHerrick
Hey, I’m Jesse and I’m the main contributor behind Dexter, a full-featured, lightning-fast Elixir LSP optimized for large codebases. It s...
New
jimsynz
Beam Bots (or just BB for short) is a framework for building fault-tolerant robotics applications in Elixir using familiar OTP patterns. ...
New
Damirados
Hello everyone. After busy few months I am happy to announce v0.1.0 of Emerge & Solve. They are GUI (Emerge) and State management (S...
New
ausimian
Emily is an Elixir library that runs Nx computations on Apple’s MLX. Install it as the default Nx backend and Nx, defn, Axon, Nx.Serving,...
New
type1fool
I just stumbled on a newly redesigned elixir-lang.org. :tada: It looks like @Software_Mansion did the work, and I think it is generally a...
New
akoutmos
@hugobarauna and I (Alex Koutmos) have been hard at work on writing a book on Nerves that takes you from simply blinking LEDs to building...
New

We're in Beta

About us Mission Statement