Matteo Baglini                            www.dotnettoscana.org
Software Developer, Freelance
matteo.baglini@gmail.com
http://it.linkedin.com/in/matteobaglini
http://github.cpom/bmatte
No more SQL, awesome!!!
                          2
Yes but, why?
                3
Modern Web
 Application
Requirements
               4
High number of heterogeneous content
                                   5
Many connected users
                       6
Immediately push info to the users
                                     7
Collection of large data sets
                                8
Scalable and on-demand architecture
                                      9
Dynamic requirements
                       10
RDBMS

        11
 Tables and relations
 Schema-full
 Pre-defined structure
 Transaction (even
  Distributed)
 Consistency
 Declarative query
  language (SQL)



                          12
Is it the right tool?
                        13
Alternative
 Database
  (NoSql)
              14
 Alternative structures
 Schema-free
 Non transactional
 Eventual consistency
 Programmatically query
  routine
 Easy to scale-out
 Use case oriented




                           15
NoSql
Categories
             16
 Data (Value) was identified by
  a unique Key
 The Value can be anything
 Primarly queriable by Key
 Examples: Amazon SimpleDB,
  Azure Table Storage, Riak,
  Redis, Voldemort,
  MemcacheDB.




                                   17
 Data contained into
    Documents that was identified
    by a unique Key
   Document was stored as JSON
    object (properties and values)
   Values can be scalars, arrays
    or complex types
   Queriable by Key or
    MapReduce
   Examples: MongoDB,
    CouchDB, RavenDB

                                     18
 Data contained into Tables
    and Column Families
   Each Column Families was a
    set of key-value pairs
   Partial schema
   Queriable by Key, MapReduce
    or custom langs
   Examples: Google BigTable,
    Hbase, Cassandra



                                  19
 Data contained into Nodes and
    Edges
   Each Node was a set of key-
    value pairs
   Each Edge represent a
    relationship
   Queriable by custom langs
   Examples: Neo4j, OrientDB,
    Titan, Sones



                                  20
NoSql
  or
RDBMS ?
          21
Polyglot
Persistence
              22
The NoSQL movement @ DotNetToscana

The NoSQL movement @ DotNetToscana