Java-Native High-Performance Micro Persistence
Store Java Object Graphs Natively. Turns SQLite Into Ultra-High-Performance Mobile Database. Get Started |
Why MicroStream?
MicroStream is the very first data storage technology that streams real Java object graphs directly into SQLite and loads any object or subgraph back in RAM dynamically when accessed. No more incompatible database data structure. No more mappings. No more data conversion. No waste of computing power. Get a Java In-Memory database on top of SQlite. Ultra-fast. Pure Java only. Game-changer concept that provides you fantastic benefits.


Ultra-fast
In-Memory queries executed in microseconds. X-times faster than any external mobile database system. Super small footprint. Multi-threaded. No magic, but simply core Java concepts and unleashed pure Android Runtime power.

Specially build for Java
No more external mobile database system. Java classes only. No more mappings. No more query language. Pure Java concepts only. Eliminates boilerplate code. High- quality Java API. From Java developers especially for Java developers. Feels like an Android-native function.

Simplest Data Storage Ever
The simplest data storage ever. Build and deploy database apps decisively faster. Increase your productivity. Reduce your time to market. Simplify and accelerate your entire development process as well as maintenance.

How does it work?

Java Object Graphs are
predestined to be used for
In-Memory Databases.
Java Object Graph -
Perfect Multi Model
Data Structure
Java provides the perfect data structure that is suited and used for every use-case. With an object graph, you can build up a highly complex data structure but allows you to store simple lists as well. Any node can basically be anything, a plain object, but also a collection, document, or binary. All Java types are supported. You can design your any object graph and any single object freely. You can have millions of nodes and subgraphs as well as only one single node. It is by nature a multi-model data structure for storing structured data but allows also handling unstructured data by using collections. Searching object graphs in RAM is super-fast and takes mostly only microseconds.
Only one Data Model: Java Classes only!
No more Database Data Model. No more Mappings.
Let your Classes as they are. No Strings attached!
Your Java classes are your only data model. There is no additional database data model. Thus, you don't have to adapt your classes effortful to any database data model. You can design your object model freely and use any Java type. There is no need for special superclasses, special interfaces, annotations, mappings or any other internal configurations. No dependencies. Just POJOs. You can use your classes as they are. If you have to change your data model, simply change your classes. That's all.
public class Customer { private String firstname; private String lastname; private String mail; private Integer age; private Boolean active; private Set<Order> orders; ... }
Storing Data persistently on Devices
MicroStream enables you to persist single Objects and complex Subgraphs
You can store everything from a single object up to complex subgraphs persistently on disk of the mobile device by calling only one simple store method. You decide explicitly if and when an object is persisted. All stored objects are appended to the file-storage. Any store operation is automatically transaction-safe. MicroStream enables you to store any Java type, collections, any custom type, and even objects from third-party APIs.
class Customer { ... public void addOrder(Order newOrder, Persister persister) { Set<Order> orders = this.orders.get(); orders.add(newOrder); persister.store(orders); } } DataRoot root = MicroStreamDemo.root(); root.getCustomers().addOrder( newOrder, MicroStreamDemo.storage() );
is Trouble-free
Handling for best Performance
Write Operations
Create, Update & Delete
Loading Data
MicroStream allows you to load single Objects and complex Subgraphs. No more classic Selects. Just calling Getter.
After starting your app, MicroStream initially loads all object IDs only and creates the entire object graph structure in RAM. Thus, you get a fully indexed in-memory database.
Loading Data is fully automized
Loading data is different to database systems. MicroStream is fully objec-toriented. There are no more classic selects. To read an object, you just have to call its get method as you are used to, and MicroStream takes care of the rest.
Fully In-Memory is best, but not mandatory
You decide, how much data you load into RAM. If you have enough RAM, you can load the entire database into RAM and benefit from max speed without any IO ops. If your data storage is much bigger than your RAM, you can load data on-demand only. In order to do that, MicroStream enables you to load any single object as well as complex subraphs lazy.
No Object Copies
Loaded objects are merged into the object graph automatically, so you never have to deal with inconvenient object copies.
![]() |
![]() |
public class Customer { ... private Lazy<Set<Order>> orders = Lazy.Reference(new HashSet<>()); ... public Stream<Order> orders() { return this.orders.get().stream(); } ... }
Queries with Java Streams API executed in Microseconds,
up to X-Times faster than any external Database System.
Java Streams API is an enormously powerful and fully typesafe query language for searching object graphs. Searching even giant and complex object- graphs in the memory takes only microseconds while database systems waste milliseconds for the same result. In other words, Java Streams are X-times faster than any external database system.
public Map<Author, List<Book>> booksByAuthor(int publicationYear) { return MicroStreamDemo.root().books() .filter(book -> book.publicationDate().getYear() == publicationYear) .collect(groupingBy(Book::author)); }
More Core Features
Legacy and corrupt data are removed from the storage by MicroStream automatically.
REST interface allows remote access to the storage data.
MicroStream is a high quality, but slim Java API.
Different versions of your classes are handled automatically. Custom mappings are also supported.
Graphical user interface for browsing through your storage data remotly.
MicroStream can be included into any Java project via Maven.
Reliable and fully individual configurable data backup processes.
The MicroStream is highly configurable by its API.