6 ms·
Show HN: A fast append-only data store for Java 8
- knd775 11y agoThis actually seems pretty useful. I'll be sure to check it out for my next Java project.
- nicksellen 11y agoHow would you compare and contrast this with http://openhft.net/products/chronicle-queue/ http://openhft.net/products/chronicle-queue/? (which I knows does a bunch more but seems like it could be used for this purpose too).
- faizshah 11y agoThis is not comparable to chronicle, this is one of the mechanisms by which chronicle works (memory mapped files). http://stackoverflow.com/a/9268065 http://stackoverflow.com/a/9268065
- MrBuddyCasino 11y ago> frequently find myself wanting a light append-only data store for pet projects As someone who is mystified by that statement: why?
- dyladan 11y agoCould be used as an event store. Rather than storing a list of mutable objects as in a normal database, you store the changes themselves as a list of facts. This makes things like replication a lot easier and can be optimized to be much faster than a traditional database.
- batbomb 11y agoThere's Apache BookKeeper to fill some of those needs.
- eropple 11y agoI've never seen BookKeeper in production. Where would you recommend its use over something like Kafka?
- lomnakkus 11y agoGreat, but that's not a product. If you're on board with the CQRS/ES thing, actually building your own should not be difficult. (Ok, so I'm assuming non-distributed DB here, but with a bit of imagination one could also do infinitely(!) scalable CQRS/ES within Bounded Contexts, given the fresh crop of easily understandable/implementable concensus algorithms.)
- wtetzner 11y agoAuditing becomes easy. The history of all changes is automatically available.
- rakoo 11y agoIf you know your data has no duplicate (eg, you want to sort and store a list of cities), you know you don't need to check the already-written objects; you only need to append objects.
- probablyfine 11y agoI've used it as the backing for a time-series database and to store deltas for a state-machine - in both situations I wanted something that understood "POJOs" and didn't require a lot of setup. Even in the case of multiple non-unique entries, if the stored objects are not meant to be mutable, the API exposes .reverse() to find the most recent.
- jkot 11y ago+ For chronicle Have look at my profile. Also there is KVEngine from H2.
- nicksellen 11y agoI tried googling for H2 KVEngine but didn't come up with anything, did you mean http://www.h2database.com/html/mvstore.html http://www.h2database.com/html/mvstore.html perhaps?
- jkot 11y agoyes
- jerven 11y agoReally nice, I am just needing this ;) Super that it is MIT licensed as well. I was halfway on building something on top of XZ SeekableInput Streams but this is probably a lot saner to use ;)
- sgt 11y agoAn example of good idiomatic Java 8 source code. Example: https://github.com/mrwilson/java-dirty/blob/master/src/main/java/uk/co/probablyfine/dirty/Store.java https://github.com/mrwilson/java-dirty/blob/master/src/main/...
- agibsonccc 11y agoIf only enterprise didn't move so slow =/. I wish I could migrate to 8.
- famousactress 11y agoThanks. Curious... are the parens meaningful in this method body? private int getPartition(int globalInsertionPosition) { return (globalInsertionPosition) / this.sizePerPartition; }
- probablyfine 11y agoNo, that's likely a leftover from refactoring. Good spot.
- famousactress 11y agoHaha, no worries! I've been checked out of Java for a while and I was a little bit worried that this was semantically meaningful, which would be a pretty confusing addition to the language :)
- deleted 11y ago[deleted]
- tlrobinson 11y agoWhat are the Java 8 features being used here, besides the obvious lambda expressions? (genuine question, I haven't stayed current with Java)
- sgt 11y agoStreams are also being used.
- hello_there 11y agoGreat. I've been wanting something like this for a while. I've got a few questions: 1. How large files are supported? 2. It says that it will only persist primitive fields on objects - does that exclude persisting a byte array? 3. What are the failure semantics? For example, what happens if my computer's power supply fails in the middle of a write? How will the program behave the next time it is started?
- javajosh 11y agoGood questions, but wouldn't it be fun to find out the answers using empirical tests? You might even be able to add tests and submit a PR, and be immortalized in the annals of github.
- mrits 11y agoYou don't get things done very fast, do you?
- dang 11y ago> You don't get things done very fast, do you? Please don't make rude comments on Hacker News.
- mrits 11y agoIt is a legitimate response to a problem that plagues the hacker community. Focus on the task at hand. Trying to understand the intricacies of a system can be educational but the best lessons learned are from completing your current project. I'm surrounded by intelligent people that can't get anything done.
- dang 11y agoOk, but the problem with your previous comment wasn't your view, but the rudeness. It's possible to express your view without rudeness; you just did. That's what we're going for here.
- apo 11y agoThis reminds me of the log abstraction: http://engineering.linkedin.com/distributed-systems/log-what-every-software-engineer-should-know-about-real-time-datas-unifying http://engineering.linkedin.com/distributed-systems/log-what...