Comments (9)
Yes, it should be improved, but the improvement mostly depends on how konserve-pg or konserve-jdbc performs at the moment. A reason for the slowness here was also the IO after each operation, which is necessary if you call transact for each entity in separate.
from datahike.
This should be resolved now with the persistent-sorted-set backend. I will close for now, reopen if it persists.
from datahike.
Hi, thanks for reporting this issue. Can you provide a small snippet to reproduce?
from datahike.
i'll whip up something soon.
i'm using test-check generators to populate, but i'll need to see if performance is similar with duplicate items
from datahike.
I created a small performance example inside datahike to measure the transaction time with different transaction sizes. Currently I'm running that and checking against in-memory, various backends, and datomic. I'll let you know, what I found there.
from datahike.
nice work on the latest release! I was playing around with the latest datahike on a plane today, also found transact to be suspiciously slow:
(defn t1 [prefix times]
(dotimes [n times]
(d/transact pg-conn [{:name (str prefix n)}])))
(time (t1 "baz6" 1000))
"Elapsed time: 76688.964706 msecs"
I'm using the konserve-pg backend in this case. I wonder if ya'll have plans for a transaction WAL of some kind, as re-indexing on each write is probably a bottleneck (maybe hitchhiker has this)
from datahike.
Yes, we are planning for that. But if I remember correctly datomic free also was synchronizing each transaction and I had to manually batch transactions. I had done that here for replikativ:
https://github.com/replikativ/twitter-collector/blob/master/src/twitter_collector/core.clj#L38
Could you work around that issue for now?
from datahike.
This issue should be solved with 0.2.1
, previously we were printing the database after each transaction, which is the default behaviour of DataScript, but not reasonable for a durable database and can give unfortunate performance if you evaluate transact in the REPL.
Looking at your example again closely, you have to keep in mind that transact
effectively ensures a roundtrip to the storage medium. Since this takes at least some milliseconds up to 10s of milliseconds in many storage systems, you have to wait for this latency times the number of transactions. While we plan to provide some internal buffering in the transactor, it is still crucial to batch as big chunks as possible in the process invoking it, because the transactor itself can require a network roundtrip in future Datahike distributed setups.
@boxxxie, @bhurlow can you recheck whether the issue is still there for you?
from datahike.
Can this be closed? The upsert improvement should have resolved that, right?
#201
from datahike.
Related Issues (20)
- Extend integration-test namespace
- [Bug]: prep-lib is broken HOT 5
- [Bug]: CI token not valid, no release possible
- [Bug]: can't import datahike.api at repl: Unable to resolve symbol: abs HOT 3
- CI: compile and upload native-image binaries to GitHub Releases HOT 2
- Reflection warnings need to be fixed for native Datahike
- [Bug]: datahike.migrate has a problem with schema/double (which cbor converts to float) HOT 2
- [Bug]: unneeded dependencies pulled HOT 7
- Integrate HTTP server HOT 4
- Improve connection handling HOT 1
- [Bug]: NullPointerException trying to transact from CLI HOT 8
- [Bug]: FileNotFoundException over resources/datahike-logo.txt HOT 2
- [Bug]: Inconsistent treatment of invalid constant values HOT 2
- [Bug]: Unable to use Datahike as a git library HOT 2
- [Bug]: `pull-many` query with 3 attr-ids on a range of 500 entities takes ~2,900 ms
- Ability to disable `ensure-stored-config-consistency` HOT 7
- chore: simplify state management
- [Bug]: :config-does-not-match-stored-db for file storage when using VPN HOT 5
- [Bug]: Problem with bump org.babashka/tools-deps-native from 0.1.1 to 0.1.2 and `datahike-logo.txt` not being packaged into the jar
- [Bug]: Metadata is incorrect for various functions
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from datahike.