Fork me on GitHub
#off-topic
<
2017-02-14
>
lmergen08:02:25

what event stores are the people in the Clojure community using for their CQRS/event sourcing setup ? I think Datomic is not very suitable, so I'm looking into a good alternative.

qqq08:02:09

I don't know what CQRS is; but for anything without Joins, I'm using GAE/DataStore

akiroz09:02:10

Heard a few cases with Kafka as the event log (I haven't built a CQRS-based server myself)

lmergen09:02:11

yeah, i think the Kafka developers even say this is an officially supported pattern

lmergen09:02:56

cassandra sounds like an interesting candidate

qqq09:02:24

Quoting a blog about atom vs emacs:

I love lisp; I think it's the bee's knees. The first programs of any real complexity I ever wrote, I wrote in lisp. Lisp is crisp, clean, and excitingly modular; it is refreshing like a spring rain.

Emacs lisp is a rain of sewage. It's dynamically scoped. There is no namespacing. 'Tools' like defadvice make it impossible to be certain of any function's behavior. Regexes, stored in strings, are hideous and unreadable.

arnaud_bos09:02:52

I've got my quote of the day: > Lisp is crisp Say it three times fast.

qqq09:02:40

the first lisp I used was scheme from sicp -- and yeah, did elisp look ugly in comparison

lmergen09:02:33

sadly, the first lisp many people (including me) are exposed to is elisp

borkdude10:02:34

I was exposed first to Common Lisp, which was a tremendous experience

borkdude10:02:05

But unfortunately I couldn’t find any job with that after I worked with it for one year, so I kind of lost the fun in programming after that

borkdude10:02:35

When I discovered Clojure it all made sense to me. Lisp + a platform that was commercially interesting, lots of JVM jobs

tbaldridge12:02:37

@Imergen some people use Kafka as the event store, and then index the events via Datomic for fast read access. There's even a Clojure/conj talk about this pattern

tbaldridge12:02:39

oh, it's not the conj, it's strangeloop.

arnaud_bos13:02:25

Also, I think the people at Cognician might be able to provide more details on their stack (Robert Stuttaford is not in this chan yet): http://www.stuttaford.me/2016/01/15/how-cognician-uses-onyx/

lmergen13:02:09

oh i haven't seen that before

lmergen13:02:37

i'm a bit uneasy with using psql / mysql as an event store, however 🙂

lmergen13:02:15

interesting to see their whole cqrs approach

wilcov17:02:48

@lmergen as someone who is just beginning to learn about cqrs, could you tell me why you would be uneasy using psq / mysql?

lmergen17:02:30

different purposes — event store is typically an append-only store, but needs very high throughput

lmergen17:02:41

so if you need to collect billions of events a month, traditional relational databases start becoming very expensive

lmergen17:02:28

so it’s more like a durable, append-only logfile — you could even use S3 as an event store

lmergen17:02:45

however, i do consider secondary indexes and time-range lookups to be something i want in an event store

lmergen17:02:14

if you care a lot about throughput / latency, you can look at something like https://github.com/OpenHFT/Chronicle-Queue that can handle 10MM events/second on a single server

lmergen17:02:25

but i was interested in the “weapon of choice” of the clojure community

wilcov17:02:28

Thanks for the detailed info, i appreciate it!

gklijs20:02:37

@tbaldridge with the latest kafka it would become possible to expose any topic as a table for quick access, also they are working on exactly once for all of streaming, and with kafka connect it’s easy to get data from and to kafka

gklijs20:02:41

I worked with kafka with java, not yet with clojure. But it seems like a good fit to reactively store/get data

sveri22:02:30

I just thought about ads and the ads replacement banners. And, while thinking about it, I wonder. Why dont websites pull ads from an ad server and deliver the ads content from their own domain?

dpsutton22:02:03

would the ad sellers trust them about how many people viewed their ads?

sveri22:02:09

Hm, so this is the problem. Makes sense.

sveri22:02:52

Hm, maybe one should start to measure impact on an ad in a different way