Camelia, the Perl 6 bug

IRC log for #cqrs-perl6, 2011-04-17

| Channels | #cqrs-perl6 index | Today | | Search | Google Search | Plain-Text | summary

All times shown according to UTC.

Time Nick Message
01:38 mac left #cqrs-perl6
01:39 mac joined #cqrs-perl6
03:13 PerlJam left #cqrs-perl6
03:14 PerlJam joined #cqrs-perl6
11:37 masak joined #cqrs-perl6
11:38 masak this "10 Reasons to do CQRS" big-picture diagram explains some things better than I can yet: http://abdullin.com/storage/uplo​ads/2010/10/CQRS-big-picture.pdf
16:59 masak left #cqrs-perl6
16:59 masak joined #cqrs-perl6
17:14 moritz masak: want to disucss aggregates a bit more?
17:19 masak yes, I do.
17:20 masak I'm about to start cooking, but I'll be around periodically to check for new locutions. :)
17:22 moritz I'm trying to mentally restructure my current project in CQRS style
17:23 moritz the project is a web page/service that groups books into logical series
17:23 masak nod
17:23 moritz and a series can be a book too, so it's really a tree
17:23 moritz when people add new titles to a series, it seems that the scope of an aggregate changes
17:24 moritz ie series and new book are separate aggregates, and on joining them, there's just one aggregate left
17:25 moritz is that a good idea?
17:25 moritz also since the scope of aggregates change, it seems to get more complex to extract state from the stored events
17:27 masak you'll want to keep your aggregates as small as possible.
17:30 moritz I might ponder single titles as aggregates
17:30 moritz problem is, I plan to support actions that operate on whole series
17:30 masak of course.
17:31 masak and I have a graph problem where the nodes are natural aggregates, but I want to act on the whole graph sometimes.
17:32 moritz maybe there can be two aggregation views of the same objects
17:32 * moritz does some reading
17:32 masak maybe.
17:32 masak the main function of the aggregate is that it helps you preserve invariants.
17:33 * moritz tries to think of title-wide aggregates
17:34 masak a transaction should never have to cross an aggregate boundary. things outside the aggregate may only reference the aggregate root. (they may reference other things briefly, for example within the lifetime of a method.)
17:34 masak things inside the aggregate may not hold references to things outside the aggregate.
17:34 masak it's perfectly fine for them to hold string IDs and the like.
17:34 moritz maybe part of my problem is that I'm not really modelling any business logic, but I'm mostly trying to desing a "smart", specialized data store
17:35 masak you don't have any business logic?
17:35 masak not any?
17:38 moritz I don't have a business :-)
17:38 moritz what I really mean is that there aren't many different possible actions, but I have highly interconnected data
17:41 masak right.
17:42 masak am I understanding correctly that a book may actually change type from a book to a series during its lifetime?
17:49 moritz yes
17:52 moritz actually that's just a question of presentation
17:53 moritz a title is always a tree
17:53 moritz and if it's only a single root, I present it as a book
17:53 moritz and otherwise as a tree
17:53 masak oh, that's much better.
17:55 moritz it's just that the user can join trees
18:01 masak oh.
18:02 masak tell me more about that. how would a joining of trees look in your application?
18:19 moritz the result? or the action?
18:19 masak I'm interested in what's possible and what isn't.
18:20 masak just "joining trees" doesn't tell me enough about the semantics.
18:21 moritz it's possible to move one tree to before/below/after another tree
18:21 moritz anther *node*
18:22 moritz it's also possible to join two roots, thereby autovivifying a new root that contains both
18:25 masak hm.
18:25 masak I see "make tree T child of node N" and "make tree T1 and T2 siblings, autocreating a new parent node for them".
18:26 masak I don't get exactly what 'before/below/after' signifies in terms of trees.
18:26 moritz it's just about the insertion position
18:27 moritz "below" creates a new level of depth
18:27 moritz wheres "before" and "after" insert at the same level as the referenced node
18:30 moritz to complicate things, books can have multiple authors, and not all books in a series have the same author
18:30 moritz and each author will need a list of books she has written
18:30 moritz so I need reference to each title
18:31 moritz so "series" naively doesn't seem to be a good choice for aggregate
18:45 masak I agree, it's not obvious.
22:20 masak left #cqrs-perl6

| Channels | #cqrs-perl6 index | Today | | Search | Google Search | Plain-Text | summary