I am new to Elixir and Phoenix. And I was wondering about the status of Mongodb support in Phoenix. So far the situation doesn’t look very promising for someone who is just starting with Elixir+Phoenix. Would you recommend Mongodb as a database for Phoenix application considering the use is perfectly suitable but compatibility of the current mongodb drivers with Phoenix is a concern? A person who is just started learning Elixir is not ready to dig deeper into the framework and implement libraries like rockstar developers.
time series data -> Timescale (PostgreSQL based)
globally distributed consist. transactional SQL don't care about $ -> Spanner
need to store and search through random crap at large scale -> ElasticSearch
need to absorb events at large scale and then process them -> Kafka
some very unusual workload and/or wiered requirements -> you'd have to do research and test :)
_ -> PostgreSQL
Ha Ha… I am not an expert so don’t know if my choice is good or not. Just that my Postgres skills are too weak and Mongodb is pretty easy to get started with for my simple application
From a learning perspective you should probably stick to a vanilla configuration because that is what the documentation, blogs, books, videos, etc. assume anyway.
Now if you have a need to use MongoDB you may want to tackle that separately as an Elixir/MongoDB problem which may or may not include include Ecto (example: How to use MongoDB With Elixir - Revisited). With the Phoenix is not your application approach it should be possible to compartmentalize the MongoDB dependency in a distinct application that Phoenix is a client to.
Ah… I wish if I knew Postgres more so that I could start coding rather than worrying about the database part. Your “quick start” help is good but probably I will need to learn Postgres a bit more than that if I want use it for my app. Thanks though. I will see if I invest some time in learning Postgres in coming weeks.
You are right, peerreynders. I have been learning about how to use mongodb with Phoenix but looks like this requires little advance Elixir skills. I think I will have to learn Elixir + Phoenix first by going through the default configuration ie, using Postgres. And then, later in the future, look into Mongodb issue. I am sure I am not the only one who wants to use mongodb.
disclaimer: I am the current maintainer of both the mongodb and mongodb_ecto packages.
Unfortunately the MongoDB support in Elixir is a little lack luster. I would attribute it mostly to the fact that largely only a single person seems to work on it at any given time. There are of course large contributions that come along. With that said, replica set support semi-recently landed in the mongodb package. Unfortunately there were a number of issues with the initial implementation. So I am slowly trying to fix them. There are also a number of features I am wanting to address. Unfortunately I only have so much time in a day.
With that said, I am using it in production at the moment. So if you, or anyone else of that matter, have any questions about getting started, please let me know and I can update documentation or something to make it more easily understandable.
Edit: There is also #elixir-lang channel on freenode or the mongodb channel in the Elixir community slack group where I hang out if anyone has any questions.
Wonderful. Thanks Ankhers for the comment. I will give ‘mongodb’ a try as you are saying ‘mongodb’ has replicaset support. I will reach out to you in case I have an issue Thanks
The advantage to this approach is that you get first introduced to using the “Phoenix is not your application” way before exploring “Phoenix is your application” - which is more like many RoR web applications are built.