Aggregate Data Models
Unit 2
      Parul Pandey
• A data model is the model through which we
  perceive and manipulate our data.
• The dominant data model of the last couple of
  decades is the relational data model, which is best
  visualized as a set of tables.
• One of the most obvious shifts with NoSQL is a
  move away from the relational model
• Different data models - key-value, document,
  column-family, and graph
• First three share a common characteristic of their
  data models which we will call aggregate
  orientation.
                      Aggregates
• The relational model - information - tuples (rows).
• Tuple is a limited data structure: It captures a set of
  values, so you cannot nest one tuple within another to get
  nested records, nor can you put a list of values or tuples
  within another. It allows us to think of all operations as
  operating on and returning tuples.
• Aggregate orientation takes a different approach. D
  – data in units that have a more complex structure than a set of
    tuples. It can be handy to think in terms of a complex record
    that allows lists and other record structures to be nested inside
    it.
• Aggregate is a collection of related objects that we
  wish to treat as a unit. In particular, it is a unit for data
  manipulation and management of consistency
• Dealing in aggregates makes it much easier for these
  databases to handle operating on a cluster, since
  theaggregate makes a natural unit for replication and
  sharding.
• Aggregates are also often easier for application
  programmers to work with, since they often
  manipulate data through aggregate structures.
 Example of Relations and Aggregates
• Let’s assume we have to build an e-commerce
  website; we are going to be selling items
  directly to customers over the web, and we
  will have to store information about users, our
  product catalog, orders, shipping addresses,
  billingaddresses, and payment data.
   Consequences of Aggregate Orientation
• The relational mapping captures the various data elements
  - without any notion of an aggregate entity.
• For eg. an order consists of order items, a shipping address,
  and a payment.
• This can be expressed in the relational model in terms of
  foreign key relationships—but there is nothing to
  distinguish relationships that represent aggregations from
  those that don’t.
• As a result, the database can’t use a knowledge of
  aggregate structure to help it store and distribute the data.
• Aggregate-oriented databases - semantics to consider by
  focusing on the unit of interaction with the data storage
  It’s all about how the data is being used by applications.
• Relational databases, graph databases - aggregate-ignorant
• aggregate structure may help with some data interactions but be an
  obstacle for others.
• difficult to draw aggregate boundaries well, particularly if the same
  data is used in many different contexts.
• order makes a good aggregate when a customer is making and
  reviewing orders, and when the retailer is processing orders.
• However, if a retailer wants to analyze its product sales over the last
  few months, then an order aggregate becomes a trouble. To get to
  product sales history, you’ll have to dig into every aggregate in the
  database.
• The clinching reason for aggregate orientation is
  that it helps greatly with running on a cluster,
• we need to minimize how many nodes we need to
  query when we are gathering data.
• Aggregates, give the database important
  information about which bits of data will be
  manipulated together, and thus should live on the
  same node.
• NoSQL databases don’t support ACID transactions
  and thus sacrifice consistency