MemoryAM - An in-memory table storage method for PostgreSQL

MemoryAM is an in-memory TEMPORARY TABLE implementation in C++ of a PostgreSQL storage method. Its mission is to be a simple implementation of a TableAM storage system. As such, we store all changes in memory, and only allow access from a single connection.

More information about the extension and how it works can be found in Lifecycle.md, and more information about how the storage engine works can be found in Store.md.

What is it?

A very simple implementation of TableAM that allows for experimentation in a fairly safe sandbox.

What is it not?

Something you should use in any production environment. This is a learning tool, not production code.

FAQ

Does MemoryAM Support Indexes?

No. Some design decisions were made to keep MemoryAM extremely simple, and thus indexes are not supported.

Are transaction supported?

Yes, at the basic level transactions are supported. This does not include sub-transactions or CommandId’s.

Is vacuum supported?

No, the decision was made to forego implementing a vacuum strategy for now, but it would be fairly easy to add.

Is (my favorite feature) supported?

Likely no, again this is a very simple TableAM implementation that implements a simple MVCC and skips over some of the more advanced implementations such as indexes, custom scans, bulk insertion, or altering the structure of the table itself.

Building

Generally, running make should get things built.

After that, a make install should get MemoryAM installed, and make installcheck can run the tests for you.

If you have doxygen involved, you can build the code documentation by running doxygen src/Doxyfile.