TheMaikXX

TheMaikXX

Hello,
I’m making a demo app for bidding. It is a POC for channels and now I decided to try to persist data using Mnesia. First thing is that I’m struggling with decision whether to use Amnesia wrapper or Mnesia directly… (but thats off-topic)
The main thing is that before the idea of persisting data I designed the app so that each item that yet to be/is auctioned should rest in dedicated GenServer and users (via websockets) will place_bids from channels by issuing message to dedicated GenServer for given auction item. I thought this solution might be a good idea to leverage the parallelism of ErlangVM. But now with Mnesia I feel like I dont need individual GenServers because I can directly access Mnesia data… Am I correct? I also thought of preserving the idea of individual GenServers that would keep the state of the auction item but would periodically/by debounce “flush” the state to Mnesia.. (but that would probably open space for potential loss of unsaved data) Is that dumb idea?
Or would any other approach fit here better?

Thanks in advance!

Showing Posts 1 to 2

hauleth

hauleth

Parallelism of ERTS is accidental, not main concept of the Erlang. Concurrency is the main concept, and these two are quite different.

You are correct.

From my viewpoint - yes. What will happen if the process go down between the debounce period? You will lose some bids.

My approach to that would be as a stream of events - you place bid, it is saved right away, and then when someone overbids you then you will get a message. Additionally I wouldn’t use Mnesia there (unless that is requirement). While this DB is built in, its maintenance isn’t quite obvious and can be confusing for developers that aren’t familiar with Erlang and its quirks. I would go for PostgreSQL (or SQLite if it is meant to be super simple and hosted on one machine only), as it is more familiar for most of the people.

So in general, I wouldn’t use GenServer there, as in this application it doesn’t really makes much sense (unless I am missing something important there).

TheMaikXX

TheMaikXX OP

Hi, thanks for the reply.

Oh yes, concurrency is what I meant.. sorry.

As for using different storing mechanism - The mnesia was just for the demo purposes as I thought using it would be quite fast as it is already baked into the system.. (silly me :slight_smile: ) so yeah, I would also prefer PostgreSQL for data store.. Maybe some day in the future we will adopt mnesia to improve performance.. but now the querying is somewhat creepy to me.. :slight_smile:

Thanks for assuring me with the useless genservers..

— All posts loaded —

Where Next? Top

Trending in Questions Top

stjefim
Hello! Suppose you are building workflow (order / task / payment) processing system with the following requirements: Each workflow con...
New
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
dli
Before I dive in myself, did anyone successfully sprinkle Hologram into their existing LiveView app? Looking for hints regarding: Addi...
New
roeland
Kia ora, We have been using elixir-google-api to connect to Google Drive. However, with the updates to Tesla due to CVEs this is now bro...
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
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
mcass19
ExRatatui lets you cook up rich terminal UIs in Elixir, powered by Rust’s ratatui via Rustler NIFs. Build interactive terminal applicatio...
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
netoum
Corex is an accessible, unstyled UI component library for Phoenix that integrates Zag.js state machines using Vanilla JavaScript and Live...
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

We're in Beta

About us Mission Statement

Options

Thread Display Mode




Thread Preview

Skip Thread Previews