Replies: 6 comments 4 replies
-
From what I read, each time you save. the graph gets versioned, maybe the extra time has to do with that, if you have all the books inside the same root object, maybe the versioning is affecting the time. I think another thing that might be affecting that is the available memory, again from what I read, it seems the store is done in memory and then persisted to disk, the memory part is fast but the IO for the disk might affect execution time. Maybe if you publish your full code, someone can spot something that might guide you in the right direction. |
Beta Was this translation helpful? Give feedback.
-
i am interested in ths answer... |
Beta Was this translation helpful? Give feedback.
-
I encounter the same issue, the microstream(the same with eclipse-store) write performance is not as good as DB, you can see my microstream-one/bookstore-demo#10, when writing the one book, the write performance is very slow comparing with DB it seems that EclipseStore is suitable for reading, not for writing. if your application is 99% read, %1 write , it will be good choice. |
Beta Was this translation helpful? Give feedback.
-
When writing frequently the same type of object, there are two ways to speed up things significantly.
|
Beta Was this translation helpful? Give feedback.
-
Regarding the mentioned lost data after restart: The reason is that the root is overwritten on every restart. Correct way instead of calling final MyEclipseStoreRoot root = new MyEclipseStoreRoot();
EmbeddedStorageManager storageManager = EmbeddedStorageConfiguration.Builder()
.setChannelCount(4)
.createEmbeddedStorageFoundation()
.createEmbeddedStorageManager(root);
storageManager.start(); Or check if no root object is present: EmbeddedStorageManager storageManager = EmbeddedStorageConfiguration.Builder()
.setChannelCount(4)
.createEmbeddedStorageFoundation()
.createEmbeddedStorageManager();
storageManager.start();
if(storageManager.root() == null)
{
storageManager.setRoot(new MyEclipseStoreRoot());
storageManager.storeRoot();
} |
Beta Was this translation helpful? Give feedback.
-
Just changed MyEclipseStoreRoot to use LazyArrayList (Map and Segment will be my snack in future ^^) the result was impressive , now it just need two digit whole time 1000 authorss in chunk should be saved by eclipsestoreTime taken for only saving: 13 milliseconds (highest time, usually 1 digit) 1000 books in chunk should be saved by eclipsestoreTime taken for only saving: 6 milliseconds 1000 Relations in chunk should be saved by eclipsestoreTime taken for only saving: 3 milliseconds PS: tried it again with relation (just some button clicks anyway) or may be garbage collector or cleaning was in background |
Beta Was this translation helpful? Give feedback.
-
Hi everyone,
I tried to insert a lot of data into eclipsestore and observed the time.
each time I will try to insert 500 000 objects (in this case only books), the storemanager.store will be called on each 1000 (chunk)
as I observed the first time (500k) each chunk will take about 6ms to store, then it will go up to about 100ms at the end. for whole 500k it would take 25595 milliseconds for first time = about 25s
second time: immediately 100ms for each chunk, later: 200ms total:74958 milliseconds for second 500k = 80s
third time: immediately 300ms for each chunk, immediately saw 500(rarely), standard: around 200-300, later: around 300 total 144822 milliseconds = 145 s
fourth time: immediately 390ms for each chunk, stay around: 380-400ms sometimes 500 total 219017 milliseconds = 3,65 min
fifth time: i messed up a bit and had to restart computer
fifth time: immediately start at 600 climb up to 700 for each 1000/chunk total 305916 milliseconds 5 min
just used the default normal storemanager with root and path, nothing special (didnt set channel)
so i ended up at about almost 3 million object in eclipsestore. the insert time keep going up the more data one have. if in future i have some billion objects then some 10 000 min to insert 1 new million data.
are there any way to keep the time like the first time (1 digit ms for 1000 objects in chunk)
in database (sql family) i heard that indexing might help. In Microstream/Eclipsestore I have no idea.
Beta Was this translation helpful? Give feedback.
All reactions