Skip to content
  • Products
    • Persistence for Java / JVM
    • Persistence for Android
    • MicroStream Cluster
    • Serializer
  • Community
    • GitHub
    • Discussion
    • Contribute
    • Issues
    • StackOverflow
  • Resources
    • Get Started
    • Docs
    • Examples
    • Videos
    • Blog
    • Release & Update Plan
  • Services
    • Support
    • Training
  • Company
    • About us
    • Contact
  • Subscribe to our Newsletter
  • User icon Sign in

Cookie

We use cookies to make it easier to use and to further improve our service.

If you have given us your consent, you can revoke it at any time in the data protection declaration.

Use all cookies Manage cookies Reject cookies

Cookie

?
?
?
Use all cookiesSave settingsReject cookiesView Privacy Policy

Necessary

Necessary cookies help make a website usable by enabling basic functions such as page navigation and access to secure areas of the website. The website cannot function properly without these cookies.

Name Anbieter Zweck Ablauf Typ
c3kie_removeCookieWindow microstream.one Saves the consent status of the user whether the cookie window should be displayed. 1 Jahr HTML Local Storage
c3kie_googleAnalytics microstream.one Saves the consent status of the user as to whether Google Analytics is allowed to run. 1 Jahr HTML Local Storage
c3kie_googleAnalytics microstream.one Saves the consent status of the user as to whether Google Analytics is allowed to run. 1 Jahr HTML Local Storage
c3kie_tagManager microstream.one Saves the consent status of the user as to whether Google Tag Manager is allowed to run. 1 Jahr HTML Local Storage
c3kie_facebook microstream.one Saves the consent status of the user as to whether Facebook is allowed to run. 1 Jahr HTML Local Storage
c3kie_matomo microstream.one Saves the consent status of the user as to whether Matomo is allowed to run. 1 Jahr HTML Local Storage
c3kie_youtube microstream.one Saves the consent status of the user as to whether YouTube is allowed to run. 1 Jahr HTML Local Storage

Statistics

Statistics cookies help website owners understand how visitors interact with websites by collecting and reporting information anonymously.

Name Anbieter Zweck Ablauf Typ
_dc_gtm_ Google Used by Google Analytics to limit the request rate. 1 Jahr HTTP Cookie
_gid_ Google Registers a unique ID that is used to generate statistical data on how the visitor uses the website. 2 Jahre HTTP Cookie
_gcl_au Google Used to send data to Google Analytics about the device and visitor behavior. Captures the visitor across devices and marketing channels. Session Pixel Tracker
_gat_ Google Used to store a unique user ID. 1 Tag HTTP Cookie
_gat_gtag_UA_ Google Used to store a unique user ID. 1 Tag HTTP Cookie
yt-player-headers-readable YouTube Used to determine the optimal video quality based on the visitor's device and network settings. Persistent HTML Local Storage

Marketing

Marketing cookies are used to track visitors across websites. The intent is to show ads that are relevant and engaging to the individual user, making them more valuable to publishers and third party advertising providers.

Name Anbieter Zweck Ablauf Typ
VISITOR_INFO1_LIVE YouTube Tries to estimate the range of users on pages with built-in YouTube videos. 179 Tage HTTP Cookie
YSC YouTube Registers a unique ID to keep statistics on which videos from YouTube the user has seen. Session HTTP Cookie
yt.innertube::nextId YouTube Registers a unique ID to keep statistics on which videos from YouTube the user has seen. Persistent HTML Local Storage
yt.innertube::requests YouTube Registers a unique ID to keep statistics on which videos from YouTube the user has seen. Persistent HTML Local Storage
ytidb::LAST_RESULT_ENTRY_KEY YouTube Saves the user's video player settings with embedded YouTube video. Persistent HTML Local Storage
yt-remote-cast-available YouTube Saves the user's video player settings with embedded YouTube video. Session HTML Local Storage
yt-remote-cast-installed YouTube Saves the user's video player settings with embedded YouTube video. Session HTML Local Storage
yt-remote-connected-devices YouTube Saves the user's video player settings with embedded YouTube video. Persistent HTML Local Storage
yt-remote-device-id YouTube Saves the user's video player settings with embedded YouTube video. Persistent HTML Local Storage
yt-remote-fast-check-period YouTube Saves the user's video player settings with embedded YouTube video. Session HTML Local Storage
yt-remote-session-app YouTube Saves the user's video player settings with embedded YouTube video. Session HTML Local Storage
yt-remote-session-name YouTube Saves the user's video player settings with embedded YouTube video. Session HTML Local Storage

MicroStream vs JPA and SQL: The Ultimate Performance Test

Apr52023
BlogPerformanceBlog title MicroStream vs JPA - the ultimate speed test

On our website, we claim that it is up to 1000x Faster than JPA with traditional database solutions.

In this blog, we describe the evidence for this claim and you can even try it for yourself to verify that this is not just a marketing claim.

The information in this blog is also available as a YouTube video: https://www.youtube.com/watch?v=XlfnMQm0uqw

BookStore Demo

The claim of the 1000x better speed is coming from the results of the Bookstore demo application. It is a Spring Boot application that keeps track of book purchases by customers in various shops that are located in different cities and countries.

The same functionality is implemented with Hibernate and a Postgres database or with MicroStream. That way, we can compare how much it takes to load the same data using Hibernate and with MicroStream.

The differences in execution time vary with the query that is executed. simple queries are 10 times faster but really complex ones can be 1000 x faster.

The code for this project can be found at this GitHub repository: https://github.com/microstream-one/bookstore-demo-performance

Playground

The Bookstore demo is of course a visually appealing solution, but there is another repository related to performance, which is much easier to access for everyone. The Performance white paper repository https://github.com/rdebusscher/performance-whitepaper contains a simplified version of the bookstore demo.

It contains a set of Java SE-based main methods that compare the execution time of Hibernate, MicroStream, and pure JDBC. No fancy graphics, but code that should be accessible for every developer without the need to understand Spring Boot, Vaadin, etc …

It has a data generator that makes sure that the same data is used by the MicroStream code as the other frameworks.

The conclusions about the comparison can be read in the Whitepaper itself.

Read performance

In conclusion, you can find find the comparison of a simple query, a paginated read of a single table, and a complex query involving more than 10 tables, in the figures below.

Fig 1: Time to read paginated data including connection time

 

Fig 2: Time to execute complex query including connection time

For a full description, have a look at the whitepaper itself. But from the graphs, it is clear that MicroStream data retrieval is faster, especially for very complex queries. The overhead of Hibernate with its query analysis and mapping can be seen when you compare it with a pure JDBC solution.
So is Hibernate and database usage than a bad thing? Not at all, it depends on your use case. But if performance is important for your application, MicroStream performs a lot better.

Write Performance

But the Bookstore demo is only about reading data. In almost all applications, this is also the most important factor since we need to read much more data than we update or create.

But what about the performance of MicroStream when it needs to write data?

In that same repository, another section is dedicated to writing data. It compares the time that is needed to write 2.8 million records to the database or through MicroStream. It also makes use of Lazy references so that all the data isn’t loaded at the same time when accessing the data.

The results are summarised in this graph.

Fig 2: Time to store records

Also here we can see clearly a faster execution when using MicroStream.

Academic support

But it is not only MicroStream itself that comes with clear evidence that the solution is faster than a traditional approach using JPA and Hibernate.

People from the Otto-Friedrich University in Bamberg wanted to verify our claim that MicroStream is 1000 times faster. You can download the research paper from our website.

They could not reproduce the query that performs 1000 times faster but confirmed MicroStream is over 400 times faster than the JPA solution.

They also adapted the application from the TPC-C benchmark specification. An application designed to test out the performance of the solution which includes a typical mixture of reading and writing data within an Online Transaction Application (OLTP)

Conclusion

There are several comparisons available that confirm that MicroStream is significantly faster than the traditional JPA and database solution. There is the BookStore performance demo that compares reading times, either in a nice graphic way using a fully-fledged Spring Boot with Vaadin application. Or a simple Java SE program that just has the required dependency and no fancy bells. Besides reading, there is also a comparison when performing writing data and an independent academic research, that all confirm:

MicroStream is fast!

 

Watch the video: Microstream vs. JPA – The Ultimate Speed Test

Categories: Blog, PerformanceApril 5, 2023Leave a comment
Tags: Performance

Author: Rudy De Busscher

Post navigation

PreviousPrevious post:MicroStream training in 2023NextNext post:MicroStream Becomes an Eclipse Project

Related Posts

Two important updates in MicroStream 8.1
June 1, 2023
Quarkus Extension for MicroStream
May 22, 2023
New Features of MicroStream version 8.0
April 28, 2023
MicroStream 8.0 is Now Available
April 26, 2023
MicroStream Becomes an Eclipse Project
April 10, 2023
MicroStream training in 2023
March 28, 2023

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

Post comment

Search
Categories
  • Blog(49)
  • CloudNotification(1)
  • Conferences(13)
  • General(3)
  • News(21)
  • Performance(2)
  • Releases(15)
  • Training(4)
Related Posts
  • Two important updates in MicroStream 8.1
    June 1, 2023
  • Quarkus Extension for MicroStream
    May 22, 2023
  • New Features of MicroStream version 8.0
    April 28, 2023
  • MicroStream 8.0 is Now Available
    April 26, 2023
  • MicroStream Becomes an Eclipse Project
    April 10, 2023
  • Blog title MicroStream vs JPA - the ultimate speed test
    MicroStream vs JPA and SQL: The Ultimate Performance Test
    April 5, 2023
  • MicroStream training in 2023
    March 28, 2023
  • May 16 – 17:00 – 21:00 CEST MicroStream Advanced Course Part 2
    March 13, 2023
  • May 9 – 17:00 – 21:00 CEST MicroStream Advanced Course Part 1
    March 13, 2023
  • April 26 – 17:00 – 21:00 CEST MicroStream Fundamentals Course
    March 13, 2023
Tags
Android AWS Cache Cloud connector Cluster Communication Conference Data Persistence eclipse event feature framework free fundamentals Hackathon Heldion How to InfoQ Integration Java JCON logging LTS Micronaut MicroProfile Microservices MicroStream MicroStream 2 MicroStream 4 MicroStream Day New Features online Open Liberty Open Source Oracle Performance persistence Quarkus release Serialization serializer Spring Boot Subscription Support Training
MicroStream

Store Java Object Graphs natively, relieved of heavy-weight DBMS Dependencies. Create ultra-fast In- Memory Database Applications & Microservices with Pure Java. The Pure Java Paradigm Shift in Database Development.

Upcoming Event

April 19, 2023 | 17:00 – 21:00 CEST
Read more

Platforms

  • MicroStream for Java / JVM
  • MicroStream for Android

Community

  • GitHub
  • Discussion
  • Contribute
  • Issues
  • StackOverflow
  • MeetUp

Resources

  • Get Started
  • Docs
  • Examples
  • Videos
  • Blog
  • Release plan

Services

  • Support
  • Training

Company

  • About us
  • Contact

Stay Connected

  • Twitter
  • LinkedIn
  • YouTube
  • GitHub
  • StackOverflow
  • MeetUp

Get the latest MicroStream news:

Subscribe

© 2023 MicroStream Software. All rights reserved.
  • Terms of use
  • Privacy
  • Legal notice

Cookie

We use cookies to make it easier to use and to further improve our service.

If you have given us your consent, you can revoke it at any time in the data protection declaration.

Use all cookies Manage cookies Reject cookies

Cookie

?
?
?
Use all cookiesSave settingsReject cookiesView Privacy Policy

Necessary

Necessary cookies help make a website usable by enabling basic functions such as page navigation and access to secure areas of the website. The website cannot function properly without these cookies.

Name Anbieter Zweck Ablauf Typ
c3kie_removeCookieWindow microstream.one Saves the consent status of the user whether the cookie window should be displayed. 1 Jahr HTML Local Storage
c3kie_googleAnalytics microstream.one Saves the consent status of the user as to whether Google Analytics is allowed to run. 1 Jahr HTML Local Storage
c3kie_googleAnalytics microstream.one Saves the consent status of the user as to whether Google Analytics is allowed to run. 1 Jahr HTML Local Storage
c3kie_tagManager microstream.one Saves the consent status of the user as to whether Google Tag Manager is allowed to run. 1 Jahr HTML Local Storage
c3kie_facebook microstream.one Saves the consent status of the user as to whether Facebook is allowed to run. 1 Jahr HTML Local Storage
c3kie_matomo microstream.one Saves the consent status of the user as to whether Matomo is allowed to run. 1 Jahr HTML Local Storage
c3kie_youtube microstream.one Saves the consent status of the user as to whether YouTube is allowed to run. 1 Jahr HTML Local Storage

Statistics

Statistics cookies help website owners understand how visitors interact with websites by collecting and reporting information anonymously.

Name Anbieter Zweck Ablauf Typ
_dc_gtm_ Google Used by Google Analytics to limit the request rate. 1 Jahr HTTP Cookie
_gid_ Google Registers a unique ID that is used to generate statistical data on how the visitor uses the website. 2 Jahre HTTP Cookie
_gcl_au Google Used to send data to Google Analytics about the device and visitor behavior. Captures the visitor across devices and marketing channels. Session Pixel Tracker
_gat_ Google Used to store a unique user ID. 1 Tag HTTP Cookie
_gat_gtag_UA_ Google Used to store a unique user ID. 1 Tag HTTP Cookie
yt-player-headers-readable YouTube Used to determine the optimal video quality based on the visitor's device and network settings. Persistent HTML Local Storage

Marketing

Marketing cookies are used to track visitors across websites. The intent is to show ads that are relevant and engaging to the individual user, making them more valuable to publishers and third party advertising providers.

Name Anbieter Zweck Ablauf Typ
VISITOR_INFO1_LIVE YouTube Tries to estimate the range of users on pages with built-in YouTube videos. 179 Tage HTTP Cookie
YSC YouTube Registers a unique ID to keep statistics on which videos from YouTube the user has seen. Session HTTP Cookie
yt.innertube::nextId YouTube Registers a unique ID to keep statistics on which videos from YouTube the user has seen. Persistent HTML Local Storage
yt.innertube::requests YouTube Registers a unique ID to keep statistics on which videos from YouTube the user has seen. Persistent HTML Local Storage
ytidb::LAST_RESULT_ENTRY_KEY YouTube Saves the user's video player settings with embedded YouTube video. Persistent HTML Local Storage
yt-remote-cast-available YouTube Saves the user's video player settings with embedded YouTube video. Session HTML Local Storage
yt-remote-cast-installed YouTube Saves the user's video player settings with embedded YouTube video. Session HTML Local Storage
yt-remote-connected-devices YouTube Saves the user's video player settings with embedded YouTube video. Persistent HTML Local Storage
yt-remote-device-id YouTube Saves the user's video player settings with embedded YouTube video. Persistent HTML Local Storage
yt-remote-fast-check-period YouTube Saves the user's video player settings with embedded YouTube video. Session HTML Local Storage
yt-remote-session-app YouTube Saves the user's video player settings with embedded YouTube video. Session HTML Local Storage
yt-remote-session-name YouTube Saves the user's video player settings with embedded YouTube video. Session HTML Local Storage