Yes, I thought the same... Now, encouraged by Dave message ;-) some links:
http://martinfowler.com/eaaDev/EventSourcing.html
Dave mentioned CQRS, some post about Events, Event Sourcing AND CQRS:
http://thinkbeforecoding.com/tag/CQRS

CQRS (Command Query Responsibility Separation) is a big topic, possibly not
needed for this thread. Some tutorial, intro links I collected
http://ajlopez.wordpress.com/2012/03/12/cqrs-links-news-and-resources-3-2/

On Wed, Jun 6, 2012 at 5:58 AM, Dave Sann <daves...@gmail.com> wrote:

> This sounds a lot like Event Sourcing to me. (often coupled with CQRS).
>
> Which, I think, is similar to what datomic is doing, where:
>  - datom      => event
>  - transactor => event store
>  - peer         => query model
>
> There are a number of presentations, blogs available on this if you
> haven't seen it previously. just Google for it
>
> It sounds simple in theory - and I like the idea a lot in principle - but
> if you look at discussion boards, there seem to be challenges in actually
> applying it effectively. Management and Synchronisation of separate write
> and read model being significant.
>
> Dave
>
> On Wednesday, 6 June 2012 08:36:25 UTC+10, Kevin Lynagh wrote:
>>
>> Jonas,
>>
>> Definitely inspired by the ideas in Datomic.
>> My question was partially: "how can I implement the core immutability
>> semantics of Datomic in plain Clojure?".
>> (Say, hypothetically, that I need a Clojure datastore with flexible
>> schema and immutability semantics but cannot actually use Datomic for
>> business reasons.)
>>
>> I gave it a shot this morning---writing code to serialize
>>
>>     {:a 1 :b 2}
>>
>> into
>>
>>     [#Assertion{:id 1, :attribute :a, :value 1, :time 0},
>>      #Assertion{:id 1, :attribute :b, :value 2, :time 0}]
>>
>> and back again (which gets a bit more complex with references/
>> collections, but not much).
>>
>> Nicolas,
>>
>> Data can be kept anywhere that tuples can be kept = )
>> Caching intermediate values "diffs are collapsed" should definitely
>> bring a speedup.
>> The immutability semantics mean you really can go all out crazy with
>> the caching too.
>>
>>
>>
>> On Jun 5, 1:44 am, "nicolas.o...@gmail.com" <nicolas.o...@gmail.com>
>> wrote:
>> > It is not totally clear in your post how you want to keep the data?
>> > Is it in memory (with a transactional log somewhere)?
>> > If it is the case, you can do better than reducing the whole data set
>> > when executing a query:
>> > you can keep a cache of query results, or indexed data and maintain
>> > it, while still being
>> > purely functional. (For example by attaching those results as meta
>> > data to the data structure, and
>> > defining your own assoc-like functions that maintain a consistency of
>> > the meta-dataed query results)
>> >
>> >
>> >
>> >
>> >
>> >
>> >
>> >
>> >
>> > On Tue, Jun 5, 2012 at 1:59 AM, Kevin Lynagh <ke...@keminglabs.com>
>> wrote:
>> > > Has anyone seen or implemented a CRUD application in Clojure using a
>> > > database of immutable facts?
>> >
>> > > For instance, a traditional database table supporting a todo-list
>> > > application has columns
>> >
>> > >    user_id, task_id, task_description, is_done
>> >
>> > > A new row is created when a user adds a task.
>> > > Then that row is updated so is_done = TRUE when the user checks the
>> > > task off.
>> >
>> > > With immutable facts this would instead be a collection of
>> statements:
>> >
>> > > User U added task T with description D at time T1
>> > > User U completed task T at time T2
>> >
>> > > To get a list of unfinished tasks for a user, you'd need to grab all
>> > > the tasks from this "transaction log", put them into a data
>> structure,
>> > > and then remove ones when you learn that they've been completed.
>> > > Whatever is left over is the todo list.
>> >
>> > > Nathan Marz talked about this in terms of big data:
>> >
>> > >    
>> > > http://nathanmarz.com/blog/**how-to-beat-the-cap-theorem.**html<http://nathanmarz.com/blog/how-to-beat-the-cap-theorem.html>
>> >
>> > > and Datomic's big bet is that your life as a developer gets much
>> > > easier when you just deal with (entity, attribute, value) + time.
>> >
>> > > I buy it in theory, but I have no idea what to expect in terms of
>> > > performance (e.g., how long would it take to find the current todo
>> > > list of someone who has added and completed/removed a few thousand
>> > > items?).
>> >
>> > > Has anyone implemented this idea on Clojure datastructures using,
>> > > say,  (timestamp, keyseq, value) and reducing a ton of calls to
>> assoc-
>> > > in?
>> > > Aside from speed, what are some other tradeoffs of an immutable
>> > > approach?
>> >
>> > > --
>> > > You received this message because you are subscribed to the Google
>> > > Groups "Clojure" group.
>> > > To post to this group, send email to clojure@googlegroups.com
>> > > Note that posts from new members are moderated - please be patient
>> with your first post.
>> > > To unsubscribe from this group, send email to
>> > > clojure+unsubscribe@**googlegroups.com<clojure%2bunsubscr...@googlegroups.com>
>> > > For more options, visit this group at
>> > >http://groups.google.com/**group/clojure?hl=en<http://groups.google.com/group/clojure?hl=en>
>> >
>> > --
>> > Sent from an IBM Model M, 15 August 1989.
>
>  --
> You received this message because you are subscribed to the Google
> Groups "Clojure" group.
> To post to this group, send email to clojure@googlegroups.com
> Note that posts from new members are moderated - please be patient with
> your first post.
> To unsubscribe from this group, send email to
> clojure+unsubscr...@googlegroups.com
> For more options, visit this group at
> http://groups.google.com/group/clojure?hl=en
>

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en

Reply via email to