Which modules to implement RDBMS in Elixir/Erlang effectively?

I have been self-studying computer science and have a passion for elixir. I want to implement a simple relational database from a few assignments.
But since then, a lot of questions which I haven’t solved. I have core layers are buffer manager layer and it manages disk manager layer

  1. Buffer Manager fetches N pages in a unit of bytes to perform actions faster in memory from the disk manager. If I assume that each page is one struct with one list of multiple records
    How do fetch these structs into memory do something and then flush them from memory to disk such as external merge sorting?
    What’s the module name similar to the Java Serialization interface or something like that?

I know this thing isn’t suitable in elixir form. But I really have a passion for Elixir/Erlang and hope to bring elixir in my background all time. I want to make things challenging myself in Elixir/Erlang to use proficient or anyone interest in this thing like me can see them.

Thanks, anyone reading

For serialization, you could use the built in erlang:term_to_binary/1 on any term, and use Erlang -- zlib for compression, or an external zstd library.

2 Likes

thank you, Do you want to implement RDBMS in elixir with me?

@sasajuric has been talking about this for a while now. I wonder if he has any ideas written about it.

If you are interested in how a database engine can be implemented entirely in Elixir, you can give a look to CubDB (it’s a bit of shameless self promotion, as I am the author :slight_smile:). It is not a relational database, but rather an embedded datastore supporting key/value access, selection of ranges, and atomic transactions, but such a storage engine is normally the core on top of which relational features are implemented.

4 Likes

oh, your internal source has implement of B tree, which I have searching for in functional programming. Thanks for this thing

1 Like

Thanks for the offer, but my main job is database virtualization using Erlang so I have plenty of RDBMS on my plate as it is :slight_smile:

You can share with me a few of your sources if allowed? I want to read code about more erlang. Thanks you