SlideShare ist ein Scribd-Unternehmen logo
1 von 231
Downloaden Sie, um offline zu lesen
Considerations for using
{"no":"SQL"} technology on
your next IT project
Akmal B. Chaudhri
(艾克摩 曹理)
Abstract
Over the past few years, we have seen the emergence
and growth in NoSQL technology. This has attracted
interest from organizations looking to solve new business
problems. There are also examples of how this
technology has been used to bring practical and
commercial benefits to some organizations. However,
since it is still an emerging technology, careful
consideration is required in finding the relevant
developer skills and choosing the right product. This
presentation will discuss these issues in greater detail. In
particular, it will focus on some of the leading NoSQL
products and discuss their architectures and suitability
for different problems
Agenda
In a packed program ...
• 
• 
• 
• 
• 
• 
• 
• 
• 
• 

Introduction
Market analysis
NoSQL
Security and vulnerability
Polyglot persistence
Benchmarks and performance
BI/Analytics
NoSQL alternatives
Summary
Resources
In a packed program ...
• 
• 
• 
• 
• 
• 
• 
• 
• 
• 

Introduction
Market analysis
NoSQL
Security and vulnerability
Polyglot persistence
Benchmarks and performance
BI/Analytics
NoSQL alternatives
Summary
Resources
In a packed program ...
• 
• 
• 
• 
• 
• 
• 
• 
• 
• 

Introduction
Market analysis
NoSQL
Security and vulnerability
Polyglot persistence
Benchmarks and performance
BI/Analytics
NoSQL alternatives
Summary
Resources
In a packed program ...
• 
• 
• 
• 
• 
• 
• 
• 
• 
• 

Introduction
Market analysis
NoSQL
Security and vulnerability
Polyglot persistence
Benchmarks and performance
BI/Analytics
NoSQL alternatives
Summary
Resources
In a packed program ...
• 
• 
• 
• 
• 
• 
• 
• 
• 
• 

Introduction
Market analysis
NoSQL
Security and vulnerability
Polyglot persistence
Benchmarks and performance
BI/Analytics
NoSQL alternatives
Summary
Resources
Introduction
My background
•  ~25 years experience in IT
– 
– 
– 
– 
– 
– 
– 

Developer (Reuters)
Academic (City University)
Consultant (Logica)
Technical Architect (CA)
Senior Architect (Informix)
Senior IT Specialist (IBM)
TI (Hortonworks)

•  Broad industry experience
•  Worked with various
technologies
–  Programming languages
–  IDE
–  Database Systems

•  Client-facing roles
–  Developers
–  Senior executives
–  Journalists

•  Community outreach
•  10 books, many presentations
History
Have you run into limitations with
traditional relational databases? Don’t
mind trading a query language for
scalability? Or perhaps you just like shiny
new things to try out? Either way this
meetup is for you.
Join us in figuring out why these new
fangled Dynamo clones and BigTables
have become so popular lately.
Source: http://nosql.eventbrite.com/
Your road leads to NoSQL?

NoSQL

NoSQL

NoSQL

NoSQL

NoSQL

NoSQL
NoSQL

NoSQL
Gartner hype curve

NoSQL
Magic quadrant ...
hot
SQL

lame

DB

ugly

Source: After “say No! No! and No! (=NoSQL Parody)” Jens Dittrich (2013)

cool
Magic quadrant

Source: Gartner (October 2013)
Innovation adoption lifecycle

Source: http://en.wikipedia.org/wiki/Technology_adoption_lifecycle
Crossing the chasm
Chasm
20 years ago
10 years ago
Today
The way developers really think
XML
NoSQL
OO
Object vs. Relational

Source: Inspired by comments from Esther Dyson during the 1990s
XML vs. Relational

Source: Inspired by https://webspace.utexas.edu/curtispe/NatConf/tam2005.html
NoSQL vs. Relational

Source: Inspired by http://www.slideshare.net/mongodb/webinar-the-opex-business-plan-for-nosql/ and
http://www.slideshare.net/lj101197/couchbase-overview033113long/
But ...
NoSQL is developer-friendly
Other Stakeholders

Developers
But ...
Riak ... We’re talking about nearly a year
of learning.[1]
Things I wish I knew about MongoDB a
year ago[2]
I am learning Cassandra. It is not easy.[3]
[1] http://productionscale.com/blog/2011/11/20/building-an-application-upon-riak-part-1.html
[2] http://snmaynard.com/2012/10/17/things-i-wish-i-knew-about-mongodb-a-year-ago/
[3] http://planetcassandra.org/blog/post/datastax-java-driver-for-apache-cassandra
NoSQL hoopla and hype
Extra! extra! ...
Extra! extra! ...

Source: Inspired by “The Next Big Thing 2012” The Wall Street Journal 27 September 2012
Extra! extra! ...
Extra! extra! ...
Extra! extra! ...

Source: Inspired by “MongoDB: Second Round” Thomas Jaspers 8 November 2012
Extra! extra! ...

Source: Inspired by “Why MongoDB is Awesome” John Nunemaker 15 May 2010 and
“Why Neo4J is awesome in 5 slides” Florent Biville 29 October 2012
Extra! extra! ...
Extra! extra! ...
Extra! extra! ...

Source: Inspired by “Saturday Night Live” Season 1 Episode 9 (1976)
Extra! extra!

Source: Inspired by the movie “Airplane!” (1980)
Past proclamations of the imminent
demise of relational technology
•  Object databases vs. relational
–  GemStone, ObjectStore, Objectivity, etc.

•  In-memory databases vs. relational
–  TimesTen, SolidDB, etc.

•  Persistence frameworks vs. relational
–  Hibernate, OpenJPA, etc.

•  XML databases vs. relational
–  Tamino, BaseX, etc.

•  Column-store databases vs. relational
–  Sybase IQ, Vertica, etc.
Market analysis
NoSQL market size ...
•  Private companies do
not publish results
•  Venture Capital (VC)
funding 10s/100s of
millions of US $[1]
•  NoSQL software
revenue was US $20
million in 2011[2]

[1] http://blogs.the451group.com/information_management/2011/11/15/
[2] http://blogs.the451group.com/information_management/2012/05/
NoSQL market size

Source: http://wikibon.org/wiki/v/Big_Data_Vendor_Revenue_and_Market_Forecast_2012-2017
NoSQL job trends

Example:
100,000
x 0.1 %
= 100 jobs!

Source: http://regulargeek.com/2012/08/30/nosql-job-trends-august-2012/ (October 2013)
NoSQL jobs in the UK
•  Database and
Business Intelligence
–  MongoDB (901)
–  Cassandra (363)
–  Redis (292)
–  HBase (146)
–  CouchDB (141)
–  Hive (130)
–  Couchbase (120)

Source: http://www.itjobswatch.co.uk/jobs/uk/nosql.do (October 2013)
NoSQL LinkedIn skills index ...

Source: 451 Research
NoSQL LinkedIn skills index

Source: 451 Research
NoSQL vs. the world ...

Source: After http://www.kchodorow.com/blog/2011/05/05/nosql-vs-the-world/ (October 2013)
NoSQL vs. the world ...

Source: After http://www.kchodorow.com/blog/2011/05/05/nosql-vs-the-world/ (October 2013)
NoSQL vs. the world

Source: After http://www.kchodorow.com/blog/2011/05/05/nosql-vs-the-world/ (October 2013)
DB-Engines ranking ...

Source: http://db-engines.com/en/ranking/ (October 2013)
DB-Engines ranking

Source: http://db-engines.com/en/ranking/ (October 2013)
NoSQL in enterprise apps

Source: “Cloud Software: Where Next?” InformationWeek August 2013
Use of NoSQL products

Source: “State of Database Technology 2013” InformationWeek April 2013
Hosting example ...

Source: Jelastic, used with permission
Hosting example

Source: Jelastic, used with permission
NoSQL
“The Stars, Like Dust”
... a squadron of small, flitting ships that
had struck and vanished, then struck
again, and made scrap of the lumbering
titanic ships that had opposed them ...
abandoning power alone, stressed speed
and co-operation ...
-- Isaac Asimov

Source: “The Stars, Like Dust” Isaac Asimov (1951)
NoSQL The Movie!

Sequel
SQL

Not
Only

SQL
Why did NoSQL datastores arise?
•  Some applications need very few database
features, but need high scale
•  Desire to avoid data/schema pre-design
altogether for simple applications
•  Need for a low-latency, low-overhead API to
access data
•  Simplicity -- do not need fancy indexing -- just
fast lookup by primary key
NoSQL drivers

Source: Couchbase NoSQL Survey (December 2011)
Big data
Variety

Velocity

Volume
Big data infrastructure

Source: “Analytics: The real-world use of big data” IBM and University of Oxford (October 2012)
Scenario where NoSQL is useful

A.N. Other

ownsCar

2000 VW

A.N. Other

ownsHouse

123 High St, London

A.N. Other

ownsComp

2007 MacBook Pro
Brewer’s CAP Theorem ...

ACID

Consistency
CA

Availability AP

?

CP
Partition
Tolerance

BASE
Brewer’s CAP Theorem

Consistency
CA
Availability AP

CP
Partition
Tolerance
ACID vs. BASE ...
• 
• 
• 
• 

Atomicity
Consistency
Isolation
Durability

•  Basically Available
•  Soft state
•  Eventual consistency
ACID vs. BASE
ACID
•  Strong consistency
•  Isolation
•  Focus on “commit”
•  Nested transactions
•  Conservative (pessimistic)
•  Availability
•  Difficult evolution

BASE
•  Weak consistency
•  Availability first
•  Best effort
•  Approximate answers OK
•  Aggressive (optimistic)
•  Simpler, faster
•  Easier evolution

Source: After “Towards Robust Distributed Systems” Eric Brewer (2000)
But ...
... we find developers spend a significant
fraction of their time building extremely
complex and error-prone mechanisms to
cope with eventual consistency and
handle data that may be out of date. We
think this is an unacceptable burden to
place on developers and that consistency
problems should be solved at the
database level.
Source: http://research.google.com/pubs/pub41344.html
Tuneable CAP
•  Examples
–  Cassandra
–  Riak
Source: 451 Research, used with permission
How many systems? ...
There are a lot of Key/Value stores and
distributed schema-free Document
Oriented Databases out there. They’re
springing up like weeds in a spring garden.
And folks love to blog about them and/or
talk about how their favorite is better than
the others (or MySQL).
-- Jeremy Zawodny
Source: http://blog.zawodny.com/2010/03/28/nosql-is-software-darwinism/
How many systems?

Source: http://nosql-database.org/ (October 2013)
Major categories of NoSQL ...
Type
Document store
Column store
Key-value store
Graph store

Examples
Source: 451 Research, used with permission
Major categories of NoSQL
Document store
Key

Column store

Document
(collection of keyvalues)

Key

CF1:
C1

CF1:
C2

Node 1

Key Binary Data

Key

CF3:
C1

Node 2
Properties

Key

Properties

Relationship 1
Key

Key-value store

CF2:
C1

Properties

Graph store
Source: Ilya Katsov, used with permission
Commercialization examples
Document store
•  Represent rich, hierarchical data structures,
reducing the need for multi-table joins
•  Structure of the documents need not be known a
priori, can be variable, and evolve instantly, but
a query can understand the contents of a
document
•  Use cases: rapid ingest and delivery for evolving
schemas and web-based objects
MongoDB example
{

{
"namespace 1": any json object,
"namespace 2": any json object,
...

"namespace 1": [
{
"_id": "key 1",
"property 1": "value",
"property 2": {
"property 3": "value",
"property 4": [ "value",
"value", "value" ]
}, ...
},
...
]

}

}

Source: Frank Denis, used with permission
Connection
private static final String DBNAME = "demodb";
private static final String COLLNAME = "people";
...
MongoClient mongoClient = new MongoClient("localhost", 27017);
DB db = mongoClient.getDB(DBNAME);
DBCollection collection = db.getCollection(COLLNAME);
System.out.println("Connected to MongoDB");
Create
BasicDBObject document = new BasicDBObject();
List<String> likes = new ArrayList<String>();
likes.add("satay");
likes.add("kebabs");
likes.add("fish-n-chips");
document.put("name", "akmal");
document.put("age", 40);
document.put("date", new Date());
document.put("likes", likes);
collection.insert(document);
Read
BasicDBObject document = new BasicDBObject();
document.put("name", "akmal");
DBCursor cursor = collection.find(document);
while (cursor.hasNext())
System.out.println(cursor.next());
cursor.close();
Update
BasicDBObject document = new BasicDBObject();
document.put("name", "akmal");
BasicDBObject newDocument = new BasicDBObject();
newDocument.put("age", 29);
BasicDBObject updateObj = new BasicDBObject();
updateObj.put("$set", newDocument);
collection.update(document, updateObj);
Delete
BasicDBObject document = new BasicDBObject();
document.put("name", "akmal");
collection.remove(document);
Connection
var async = require('async');
var MongoClient = require('mongodb').MongoClient;
MongoClient.connect("mongodb://localhost:27017/demodb",
function(err, db) {
if (err) {
return console.log(err);
}
console.log("Connected to MongoDB");
var collection = db.collection('people');
var document = {
'name':'akmal',
'age':40,
'date':new Date(),
'likes':['satay', 'kebabs', 'fish-n-chips']
};
Create
function (callback) {
collection.insert(document, {w:1}, function(err, result) {
if (err) {
return callback(err);
}
callback();
});
},
Read
function (callback) {
collection.findOne({'name':'akmal'}, function(err, item) {
if (err) {
return callback(err);
}
console.log(item);
callback();
});
},
Update
function (callback) {
collection.update({'name':'akmal'}, {$set:{'age':29}}, {w:1},
function(err, result) {
if (err) {
return callback(err);
}
callback();
});
},
Delete
function (callback) {
collection.remove({'name':'akmal'}, function(err, result) {
if (err) {
return callback(err);
}
callback();
});
},
Column store ...
•  Manage structured data, with multiple-attribute
access
•  Columns are grouped together in “columnfamilies/groups”; each storage block contains
data from only one column/column set to provide
data locality for “hot” columns
•  Column groups defined a priori, but support
variable schemas within a column group
Column store
•  Scale using replication, multi-node distribution
for high availability and easy failover
•  Optimized for writes
•  Use cases: high throughput verticals (activity
feeds, message queues), caching, web
operations
Cassandra example
{

{
"column family 1": {
"key 1": {
"property 1": "value",
"property 2": "value"
},
"key 2": {
"property 1": "value",
"property 4": "value",
"property 5": "value"
}
}, ...

"column family 2": {
"super key 1": {
"key 1": {
"property 1": "value",
"property 2": "value"
},
"key 2": {
"property 1": "value",
"property 4": "value",
"property 5": "value"
}, ...
}, ...
}, ...

}
}

Source: Frank Denis, used with permission
Connection
Class.forName("org.apache.cassandra.cql.jdbc.CassandraDriver");
connection = DriverManager.getConnection(
"jdbc:cassandra://localhost:9160/demodb");
System.out.println("Connected to Cassandra");
Create
String query =
"BEGIN BATCHn" +
"INSERT INTO people (name, age, date, likes) VALUES ('akmal', 40, '"
+ new Date() +
"', {'satay', 'kebabs', 'fish-n-chips'})n" +
"APPLY BATCH;";
Statement statement = connection.createStatement();
statement.executeUpdate(query);
statement.close();
Read
String query = "SELECT * FROM people";
Statement statement = connection.createStatement();
ResultSet cursor = statement.executeQuery(query);
while (cursor.next())
for (int j = 1; j < cursor.getMetaData().getColumnCount()+1; j++)
System.out.printf("%-10s: %s%n",
cursor.getMetaData().getColumnName(j),
cursor.getString(cursor.getMetaData().getColumnName(j)));
cursor.close();
statement.close();
Update
String query =
"UPDATE people SET age = 29 WHERE name = 'akmal'";
Statement statement = connection.createStatement();
statement.executeUpdate(query);
statement.close();
Delete
String query =
"BEGIN BATCHn" +
"DELETE FROM people WHERE name = 'akmal'n" +
"APPLY BATCH;";
Statement statement = connection.createStatement();
statement.executeUpdate(query);
statement.close();
Key-value store
•  Simplest NoSQL stores, provide low-latency
writes but single key/value access
•  Store data as a hash table of keys where every
key maps to an opaque binary object
•  Easily scale across many machines
•  Use-cases: applications that require massive
amounts of simple data (sensor, web
operations), applications that require rapidly
changing data (stock quotes), caching
Redis and Riak examples
{

{
database number: {
"key 1": "value",
"key 2": [ "value", "value",
"value" ],
"key 3": [
{ "value": "value", "score":
score },
{ "value": "value", "score":
score },
...
],
"key 4": {
"property 1": "value",
"property 2": "value",
"property 3": "value", ...
}, ...
}

}
Source: Frank Denis, used with permission

"bucket 1": {
"key 1": document + content-type,
"key 2": document + content-type,
"link to another object 1": URI of
other bucket/key,
"link to another object 2": URI of
other bucket/key,
},
"bucket 2": {
"key 3": document + content-type,
"key 4": document + content-type,
"key 5": document + content-type
...
}, ...
}
Connection
Jedis j = new Jedis("localhost", 6379);
j.connect();
System.out.println("Connected to Redis");
Create
String id = Long.toString(j.incr("global:nextUserId"));
j.set("uid:" + id + ":name", "akmal");
j.set("uid:" + id + ":age", "40");
j.set("uid:" + id + ":date", new Date().toString());
j.sadd("uid:" + id + ":likes", "satay");
j.sadd("uid:" + id + ":likes", "kebabs");
j.sadd("uid:" + id + ":likes", "fish-n-chips");
j.hset("uid:lookup:name", "akmal", id);
Read
String id = j.hget("uid:lookup:name", "akmal");
print("name ", j.get("uid:" + id + ":name"));
print("age ", j.get("uid:" + id + ":age"));
print("date ", j.get("uid:" + id + ":date"));
print("likes ", j.smembers("uid:" + id + ":likes"));
Update
String id = j.hget("uid:lookup:name", "akmal");
j.set("uid:" + id + ":age", "29");
Delete
String id = j.hget("uid:lookup:name", "akmal");
j.del("uid:" + id + ":name");
j.del("uid:" + id + ":age");
j.del("uid:" + id + ":date");
j.del("uid:" + id + ":likes");
Graph store
•  Use nodes, relationships between nodes, and
key-value properties
•  Access data using graph traversal, navigating
from start nodes to related nodes according to
graph algorithms
•  Faster for associative data sets
•  Use cases: storing and reasoning on complex
and connected data, such as inferencing
applications in healthcare, government, telecom,
oil, performing closure on social networking
graphs
Connection
private static final String DB_PATH =
"C:/neo4j-community-1.8.2/data/graph.db";
private static enum RelTypes implements RelationshipType {
LIKES
}
...
graphDb =
new GraphDatabaseFactory().newEmbeddedDatabase(DB_PATH);
registerShutdownHook(graphDb);
System.out.println("Connected to Neo4j");
Create
Transaction tx = graphDb.beginTx();
try {
firstNode = graphDb.createNode();
firstNode.setProperty("name", "akmal");
firstNode.setProperty("age", 40);
firstNode.setProperty("date", new Date().toString());
secondNode = graphDb.createNode();
secondNode.setProperty("food", "satay, kebabs, fish-n-chips");
relationship = firstNode.createRelationshipTo(secondNode,
RelTypes.LIKES);
relationship.setProperty("likes", "likes");
tx.success();
} finally { tx.finish(); }
Read
Transaction tx = graphDb.beginTx();
try {
print("name", firstNode.getProperty("name"));
print("age", firstNode.getProperty("age"));
print("date", firstNode.getProperty("date"));
print("likes", secondNode.getProperty("food"));
tx.success();
} finally { tx.finish(); }
Update
Transaction tx = graphDb.beginTx();
try {
firstNode.setProperty("age", 29);
tx.success();
} finally { tx.finish(); }
Delete
Transaction tx = graphDb.beginTx();
try {
firstNode.getSingleRelationship(RelTypes.LIKES,
Direction.OUTGOING).delete();
firstNode.delete();
secondNode.delete();
tx.success();
} finally { tx.finish(); }
NoSQL use cases ...
•  Online/mobile gaming
–  Leaderboard (high score table) management
–  Dynamic placement of visual elements
–  Game object management
–  Persisting game/user state information
–  Persisting user generated data (e.g. drawings)

•  Display advertising on web sites
–  Ad Serving: match content with profile and present
–  Real-time bidding: match cookie profile with advert
inventory, obtain bids, and present advert
NoSQL use cases
•  Dynamic content management and publishing
(news and media)
–  Store content from distributed authors, with fast
retrieval and placement
–  Manage changing layouts and user generated content

•  E-commerce/social commerce
–  Storing frequently changing product catalogs

•  Social networking/online communities
•  Communications
–  Device provisioning
Use case requirements ...
•  Schema flexibility and development agility
–  Application not constrained by fixed pre-defined
schema
–  Application drives the schema
–  Ability to develop a minimal application rapidly, and
iterate quickly in response to customer feedback
–  Ability to quickly add, change or delete “fields” or
data-elements
–  Ability to handle a mix of structured and unstructured
data
–  Easier, faster programming, so faster time to market
and quick to adapt
Use case requirements ...
•  Consistent low latency, even under high load
–  Typically milliseconds or sub-milliseconds, for reads
and writes
–  Even with millions of users

•  Dynamic elasticity
–  Rapid horizontal scalability
–  Ability to add or delete nodes dynamically
–  Application transparent elasticity, such as automatic
(re)distribution of data, if needed
–  Cloud compatibility
Use case requirements
•  High availability
–  24 x 7 x 365 availability
–  (Today) Requires data distribution and replication
–  Ability to upgrade hardware or software without any
down time

•  Low cost
–  Commonly available hardware
–  Lower cost software, such as open source or pay-peruse in cloud
–  Reduced need for database administration, and
maintenance
Security and
vulnerability
Security
MongoDB security
The most effective way to reduce risk for
MongoDB deployments is to run your
entire MongoDB deployment, including all
MongoDB components (i.e. mongod,
mongos and application instances) in a
trusted environment.

Source: http://docs.mongodb.org/manual/administration/security/ (October 2012)
CouchDB security
When you start out fresh, CouchDB allows
any request to be made by anyone ...
While it is incredibly easy to get started
with CouchDB that way, it should be
obvious that putting a default installation
into the wild is adventurous. Any rogue
client could come along and delete a
database. relax
Source: http://guide.couchdb.org/draft/security.html (October 2012)
Redis security
Redis is designed to be accessed by
trusted clients inside trusted environments.
This means that usually it is not a good
idea to expose the Redis instance directly
to the internet or, in general, to an
environment where untrusted clients can
directly access the Redis TCP port or
UNIX socket.

Source: http://redis.io/topics/security/ (October 2012)
NoSQL injection attacks ...
•  NoSQL systems are
vulnerable
•  Various types of
attacks
•  Understand the
vulnerabilities and
consequences
NoSQL injection attacks
•  Popular NoSQL
products will attract
more interest and
scrutiny
•  Features of some
programming
languages, e.g. PHP
•  Server-Side
JavaScript (SSJS)
Polyglot
persistence

Source: Heroku, used with permission
Polyglot persistence
User Sessions

Financial Data

Shopping Cart

Recommendations

Product Catalog

Reporting

Analytics

User Activity Logs

Source: Adapted from http://martinfowler.com/bliki/PolyglotPersistence.html
Polyglot persistence examples
•  Disney
–  Cassandra, Hadoop, MongoDB

•  Interactive Mediums
–  CouchDB, MySQL

•  Mendeley
–  HBase, MongoDB, Solr, Voldemort

•  Netflix
–  Cassandra, Hadoop/HBase, RDBMS, SimpleDB

•  Twitter
–  Cassandra, FlockDB, Hadoop/HBase, MySQL
Polyglot persistence
•  NoSQL product specialization requires
developer knowledge and skills for each platform
•  Different APIs
–  Develop public API for each NoSQL store (Disney)
Public API for NoSQL store
In some cases, the team decided to hide
the platform’s complexity from users; not
to facilitate its use, but to keep loosecannon developers from doing something
crazy that could take down the whole
cluster. It could show them all the controls
and knobs in a NoSQL database, but “they
tend to shoot each other,” Jacob said.
“First they shoot themselves, then they
shoot each other.”
Source: “How Disney built a big data platform on a startup budget” Derrick Harris (2012)
Asynchronous message
passing
(Actors)

Module
1

(Actors)

Module
3

Graph-structured
domain rules

Document
structures

Columnar data
Access with
decentralization

Document structures
with offline
processing
Module
2

Source: Debasish Ghosh, used with permission

Module
4
Multi-paradigm example
•  Application that routes picking baskets for
inventory in a warehouse
•  A graph with bins of inventory (nodes) along
aisles (edges)
•  Store graph in Neo4j for performance
•  Asynchronously persist in MySQL for reporting
•  Move data using asynchronous message queue
•  Faster performance, easier development,
simpler scaling, and reduced cost

Source: http://akfpartners.com/techblog/2011/06/21/multi-paradigm-data-storage-architectures/
Polyglot persistence with
EclipseLink JPA
•  Java Persistence API (JPA) for access to
NoSQL systems
•  Annotations and XML to identify stored NoSQL
entities
•  An application can use multiple database
systems
•  Single composite Persistence Unit (PU) supports
relational and non-relational data
•  Support for MongoDB and Oracle NoSQL with
other products planned
Benchmarks and
performance
Yahoo Cloud Serving BM ...
•  Originally Tested Systems
–  Cassandra, HBase, Yahoo!’s PNUTS,
sharded MySQL

•  Tier 1 (performance)
–  Latency by increasing the server load

•  Tier 2 (scalability)
–  Scalability by increasing the number of
servers
Yahoo Cloud Serving BM
•  Yahoo Cloud Serving
Benchmark (YCSB)
–  Research paper
–  Slide deck

•  Altoros Report
–  50+ pages

•  Thumbtack Report
–  40+ pages
“Can the Elephants Handle the
NoSQL Onslaught?”
•  DSS Workload (TPC-H)
–  Hive vs. Parallel Data Warehouse

•  Modern OLTP Workload (YCSB)
–  MongoDB vs. SQL Server

•  Conclusions
–  NoSQL systems are behind relational systems
in performance
Linked Data Benchmark Council

•  EU-funded project
•  Develop Graph and RDF benchmarks
Stress testing
•  Jepsen project
–  Rigorously test how various database
systems handle partitions
–  Evaluate consistency

•  Conclusions
–  Don’t rely on vendor marketing, product
documentation or “pull the plug” test
BI/Analytics
Architectures
• 
• 
• 
• 
• 
• 

NoSQL reports
NoSQL thru and thru
NoSQL + MySQL
NoSQL as ETL source
NoSQL programs in BI tools
NoSQL via BI database (SQL)

Source: Nicholas Goodman
NoSQL via BI database (SQL)
LIVE OR CACHED
PENTAHO.PRPT

ALL_CONTRACTS

VIEWS

15 min

local_
ALL_CONTRACTS

DOCS

view: "all"
javascript, map, reduce

Source: http://www.nicholasgoodman.com/bt/blog/2011/06/22/sql-access-to-couchdb-views-easy-reporting/
NoSQL alternatives
Source: 451 Research, used with permission
NewSQL
•  Today, new challenges and requirements
–  “Web changes everything”

• 
• 
• 
• 

Need more OLTP throughput
Need real-time analytics
ACID support
Preserve SQL
–  Automatic query optimization

•  Preserve investment
–  Existing skills and tools
Connection
Class.forName("com.nuodb.jdbc.Driver");
Properties properties = new Properties();
properties.put("user", "dba");
properties.put("password", "goalie");
properties.put("schema", "test");
connection = DriverManager.getConnection(
"jdbc:com.nuodb://localhost/test", properties);
System.out.println("Connected to NuoDB");
Create
PreparedStatement statement = connection.prepareStatement(
"INSERT INTO people (name, age, date, likes) VALUES (?, ?, ?, ?)");
statement.setString(1, "akmal");
statement.setInt(2, 40);
statement.setString(3, new Date().toString());
statement.setString(4, "satay kebabs fish-n-chips");
statement.addBatch();
statement.executeBatch();
connection.commit();
Read
String query = "SELECT * FROM people;";
Statement statement = connection.createStatement();
ResultSet cursor = statement.executeQuery(query);
while (cursor.next()) {
System.out.print(cursor.getString(1) + " ");
System.out.print(cursor.getInt(2) + " ");
System.out.print(cursor.getString(3) + " ");
System.out.println(cursor.getString(4));
}
cursor.close();
statement.close();
Update
String query =
"UPDATE people SET age = 29 WHERE name = 'akmal';";
Statement statement = connection.createStatement();
statement.executeUpdate(query);
connection.commit();
readData(connection);
Delete
String query = "DELETE FROM people WHERE name = 'akmal';";
Statement statement = connection.createStatement();
statement.executeUpdate(query);
connection.commit();
Relational
•  Vendors adding NoSQL capabilities
–  Documents (e.g. XML, JSON)
–  Linked data (e.g. RDF)
Relational vs. XML vs. RDF
Relational

XML

RDF

Tables

Trees

Graphs

Flat, highly
structured

Hierarchical data

Linked data

Rows in a table

Nodes in a tree

Triples describe
links

Fixed schema

No or flexible
schema

Highly flexible

SQL (ANSI/ISO)

XPath/XQuery
(W3C)

SPARQL (W3C)
What about Oracle?
Summary
Source: ParElastic, used with permission
Relational does NoSQL
Often the overhead of managing data in
multiple databases is more than the
advantages of the other store being faster.
You can do “NoSQL” inside and around a
hackable database like PostgreSQL, not
just as a separate one.
-- Hannu Krosing

Source: http://2013.nosql-matters.org/cgn/abstracts/#abstract_hannu_krosing/
Structured vs. unstructured

Structured

Unstructured
Relational vs. NoSQL toolbox
Relational vs. NoSQL ...
It is specious to compare NoSQL
databases to relational databases; as
you’ll see, none of the so-called “NoSQL”
databases have the same implementation,
goals, features, advantages, and
disadvantages. So comparing “NoSQL” to
“relational” is really a shell game.
-- Eben Hewitt
Source: “Cassandra: The Definitive Guide” Eben Hewitt (2010)
Relational vs. NoSQL
Limitations of NoSQL
•  Lack of standardized or well-defined semantics
–  Transactions? Isolation levels?

•  Reduced consistency for performance and
scalability
–  “Eventual consistency”
–  “Soft commit”

• 
• 
• 
• 

Limited forms of access, e.g. often no joins, etc.
Proprietary interfaces
Large clusters, failover, etc.?
Security?
Choices, choices
Simple
Slow
Small

Value of Individual Data Item

Aggregate Data Value

Velocity

Hadoop, etc.

NoSQL

Data
Warehouse

NewSQL

Traditional RDBMS
Transactional
Interactive

Analytic
Real-time
Analytics

Source: VoltDB, used with permission

Record Lookup

Historical
Analytics

Exploratory
Analytics

Data Value

Application Complexity

Fast
Complex
Large
Understand your use case

Source: http://www.techvalidate.com/tvid/F66-11B-178/
Understand vendor-speak
What vendor says

What vendor means

The biggest in the world

The biggest one we’ve got

The biggest in the universe

The biggest one we’ve got

There is no limit to ...

It’s untested, but we don’t mind if you
try it

A new and unique feature

Something the competition has had for
ages

Currently available feature

We are about to start Beta testing

Planned feature

Something the competition has, that we
wish we had too, that we might have one
day

Highly distributed

International offices

Engineered for robustness

Comes in a tough box

Source: “Object Databases: An Evaluation and Comparison” Bloor Research (1994)
The great debate ...
The great debate ...
About every ten years or so, there is a
“great debate” between, on the one hand,
those who see the problem of data
modelling through a more or less relational
lens, and on the other, a noisier set of
“refuseniks” who have a hot new thing to
promote. The debate usually goes like
this:
The great debate ...
Refuseniks: Hah! You relational people
with your flat tables and silly query
languages! You are so unhip! You simply
cannot deal with the problem of [INSERT
NEW THING HERE]. With an [INSERT
NEW THING HERE]-DBMS we will finish
you, and grind your bones into dust!
The great debate
R-people: You make some good points.
But unfortunately a) there is an enormous
amount of money invested in building
scalable, efficient and reliable database
management products and no one is going
to drop all of that on the floor and b) you
are confusing DBMS engineering
decisions with theoretical questions. We
plan to incorporate the best of these ideas
into our products.
Source: Paul Brown
It’s the people ...
... MongoDB Day London ... the problem is
the people! They all talk like this:
1.  Some problem that just doesn’t really
exist (or hasn’t existed for a very long
time) with relational databases
2.  MongoDB
3.  Profit!
-- Gaius Hammond
Source: http://gaiustech.wordpress.com/2013/04/13/mongodb-days/
It’s the people
... most of the business people driving the
Big Data NoSQL databases are data
management illiterate; don’t recognize the
lack of NoSQL data management
facilities ... and don’t know anything about
availability, referential integrity and
normalized data designs.
-- Dave Beulke
Source: http://davebeulke.com/big-data-day-recap/
Final thoughts
We are clearly in the phase of a new
technology adoption in which the category
is hyped, its benefits over-promised, its
limitations poorly understood, and its value
oversold.
-- Tim Berglund

Source: “Saying Yes to NoSQL” Tim Berglund (2011)
Contact details
Find me on ...
–  http://www.linkedin.com/in/akmalchaudhri
–  http://twitter.com/akmalchaudhri
–  http://www.quora.com/Akmal-Chaudhri
–  http://www.facebook.com/akmal.chaudhri
–  http://plus.google.com/
105126255575427189842/
–  http://www.slideshare.net/VeryFatBoy/
–  http://www.youtube.com/VeryFatBoyVideos/
Akmal B. Chaudhri
firstname.lastname@live.com
{"thank":"You"}
Resources
History
•  First NoSQL meetup
–  http://nosql.eventbrite.com/
–  http://blog.oskarsson.nu/post/22996139456/nosqlmeetup

•  First NoSQL meetup debrief
–  http://blog.oskarsson.nu/post/22996140866/nosqldebrief

•  First NoSQL meetup photographs
–  http://www.flickr.com/photos/russss/sets/
72157619711038897/
NoSQL Search roadshow
•  Multi-city tour 2013
–  Munich
–  Berlin
–  San Francisco
–  Copenhagen
–  Zurich
–  Amsterdam
–  London

Source: http://nosqlroadshow.com/
Web sites
•  NoSQL Databases and Polyglot Persistence: A
Curated Guide
–  http://nosql.mypopescu.com/

•  NoSQL: Your Ultimate Guide to the NonRelational Universe!
–  http://nosql-database.org/
Free books ...

•  Data Access for Highly-Scalable Solutions: Using SQL,
NoSQL, and Polyglot Persistence
–  http://www.microsoft.com/en-us/download/details.aspx?id=40327
Free books ...

•  The Little MongoDB Book
–  http://openmymind.net/2011/3/28/The-Little-MongoDB-Book/

•  The Little Redis Book
–  http://openmymind.net/2012/1/23/The-Little-Redis-Book/
Free books ...

•  CouchDB: The Definitive Guide
–  http://guide.couchdb.org/

•  A Little Riak Book
–  http://littleriakbook.com
Free books

•  Understanding The Top 5 Redis Performance Metrics
–  http://info.datadoghq.com/top-5-redis-performance-metricsebook
Free training
CERTIFICATE

CERTIFICATE

Dec. 24th, 2012

Dec. 24th, 2012

This is to certify that

This is to certify that

Akmal Chaudhri

Akmal Chaudhri

successfully completed

successfully completed

M101: MongoDB for Developers

M102: MongoDB for DBAs

a course of study offered by 10gen, The MongoDB Company

a course of study offered by 10gen, The MongoDB Company

Dwight Merriman
10gen, Inc.

Andrew Erlichson

Dwight Merriman

Vice President, Education
10gen, Inc.

Authenticity of this certificate can be verified at https://education.10gen.com/downloads/certificates/1e73378509f046f28cbcb2212f3d7cff/Certificate.pdf

10gen, Inc.

Andrew Erlichson

Vice President, Education
10gen, Inc.

Authenticity of this certificate can be verified at https://education.10gen.com/downloads/certificates/c0e418e393e247eb818d82d0472549f4/Certificate.pdf

•  Free courses on MongoDB
–  https://education.mongodb.com/
Articles and reports
•  Saying Yes to NoSQL
–  http://www.nofluffjuststuff.com/s/magazine/
NFJS_theMagazine_Vol3_Issue3_May2011.pdf

•  The State of NoSQL
–  http://www.infoq.com/articles/State-of-NoSQL/

•  D. Feinberg, M. Adrian and N. Heudecker (2013)
Magic Quadrant for Operational Database
Management Systems, Gartner, ID:G00251780,
21 October 2013
–  http://info.marklogic.com/gartner-odbms.html
White papers
•  The CIO’s Guide to
NoSQL
–  http://
documents.dataversity
.net/whitepapers/thecios-guide-tonosql.html
Product selection ...
•  101 Questions to Ask When Considering a
NoSQL Database
–  http://highscalability.com/blog/2011/6/15/101questions-to-ask-when-considering-a-nosqldatabase.html

•  35+ Use Cases for Choosing Your Next NoSQL
Database
–  http://highscalability.com/blog/2011/6/20/35-usecases-for-choosing-your-next-nosql-database.html
Product selection
•  NoSQL Options Compared: Different Horses for
Different Courses
–  http://www.slideshare.net/tazija/nosql-optionscompared/

•  NoSQL Data Modeling Techniques
–  http://highlyscalable.wordpress.com/2012/03/01/
nosql-data-modeling-techniques/

•  Choosing a NoSQL data store according to your
data set
–  http://00f.net/2010/05/15/choosing-a-nosql-data-storeaccording-to-your-data-set/
Short product overviews ...
•  Picking the Right NoSQL Database Tool
–  http://blog.monitis.com/index.php/2011/05/22/pickingthe-right-nosql-database-tool/

•  NoSQL Databases -- A Look at Apache
Cassandra
–  http://blog.monitis.com/index.php/2011/05/24/nosqldatabases-a-look-at-apache-cassandra/

•  The NoSQL Databases -- A Look at HBase
–  http://blog.monitis.com/index.php/2011/05/31/thenosql-databases-a-look-at-hbase/
Short product overviews ...
•  A Look at Some NoSQL Databases -- MongoDB,
Redis and Basho Riak
–  http://blog.monitis.com/index.php/2011/06/06/a-lookat-some-nosql-databases-mongodb-redis-and-bashoriak/

•  Picking the Right NoSQL Database, Part 4 -CouchDB and Membase
–  http://blog.monitis.com/index.php/2011/06/17/pickingthe-right-nosql-database-part-4-couchdb-andmembase/
Short product overviews
•  Cassandra vs MongoDB vs CouchDB vs Redis
vs Riak vs HBase vs Couchbase vs Neo4j vs
Hypertable vs ElasticSearch vs Accumulo vs
VoltDB vs Scalaris comparison
–  http://kkovacs.eu/cassandra-vs-mongodb-vscouchdb-vs-redis/

•  vsChart.com
–  http://vschart.com/list/database/
Case studies ...
•  Real World NoSQL: HBase at Trend Micro
–  http://gigaom.com/cloud/real-world-nosql-hbase-attrend-micro/

•  Real World NoSQL: MongoDB at Shutterfly
–  http://gigaom.com/cloud/real-world-nosql-mongodbat-shutterfly/

•  Real World NoSQL: Cassandra at Openwave
–  http://gigaom.com/cloud/realworld-nosql-cassandraat-openwave/
Case studies
•  Real World NoSQL: Amazon SimpleDB at Netflix
–  http://gigaom.com/cloud/real-world-nosql-amazonsimpledb-at-netflix/

•  Real World NoSQL: Membase at Tribal Crossing
–  http://gigaom.com/cloud/real-world-nosql-membaseat-tribal-crossing/

•  How Disney built a big data platform on a startup
budget
–  http://gigaom.com/data/how-disney-built-a-big-dataplatform-on-a-startup-budget/
Negative NoSQL comments ...
•  Scaling with MongoDB
–  http://opensourcebridge.org/wiki/2011/
Scaling_with_MongoDB
–  https://speakerdeck.com/robotadam/postgres-aturban-airship/

•  A Year with MongoDB
–  http://blog.engineering.kiip.me/post/20988881092/ayear-with-mongodb/
–  https://speakerdeck.com/mitsuhiko/a-year-ofmongodb/
Negative NoSQL comments ...
•  Why MongoDB Never Worked Out at Etsy
–  http://mcfunley.com/why-mongodb-never-worked-outat-etsy/

•  Goodbye, CouchDB
–  http://sauceio.com/index.php/2012/05/goodbyecouchdb/

•  Don’t use NoSQL
–  https://speakerdeck.com/roidrage/dont-use-nosql/
–  http://vimeo.com/49713827/
Negative NoSQL comments ...
•  MongoDB is to NoSQL like MySQL to SQL -- in
the most harmful way
–  http://use-the-index-luke.com/blog/2013-10/mysql-isto-sql-like-mongodb-to-nosql

•  The Genius and Folly of MongoDB
–  http://nyeggen.com/blog/2013/10/18/the-genius-andfolly-of-mongodb/
Negative NoSQL comments ...
•  Do Developers Use NoSQL Because They're
Too Lazy to Use RDBMS Correctly?
–  http://architects.dzone.com/articles/do-developersuse-nosql/
–  http://gaiustech.wordpress.com/2013/04/13/mongodbdays/

•  The parallels between NoSQL and self-inflicted
torture
–  http://www.parelastic.com/blog/parallels-betweennosql-and-self-inflicted-torture/
Negative NoSQL comments
•  7 hard truths about the NoSQL revolution
–  http://www.infoworld.com/d/data-management/7-hardtruths-about-the-nosql-revolution-197493

•  Google goes back to the future with SQL F1
database
–  http://www.theregister.co.uk/2013/08/30/
google_f1_deepdive/
Security ...
•  NoSQL, no security?
–  http://www.slideshare.net/wurbanski/nosql-nosecurity/

•  NoSQL, No Injection!?
–  http://www.slideshare.net/wayne_armorize/nosql-nosql-injections-4880169/

•  Attacking MongoDB
–  http://www.slideshare.net/cyber-punk/mongo-db-eng/

•  NoSQL, But Even Less Security
–  http://blogs.adobe.com/asset/files/2011/04/NoSQLBut-Even-Less-Security.pdf
Security
•  NoSQL Database Security
–  http://conference.auscert.org.au/conf2011/
presentations/Louis Nyffenegger V1.pdf

•  Does NoSQL Mean No Security?
–  http://www.darkreading.com/database-security/
167901020/security/news/232400214/does-nosqlmean-no-security.html

•  A Response To NoSQL Security Concerns
–  http://www.darkreading.com/blog/232600288/aresponse-to-nosql-security-concerns.html
Polyglot persistence ...
•  Polyglot Persistence
–  http://www.slideshare.net/jwoodslideshare/polyglotpersistence-two-great-tastes-that-taste-greattogether-4625004/

•  HBase at Mendeley
–  http://www.slideshare.net/danharvey/hbase-atmendeley/

•  Polyglot Persistence Patterns
–  http://abhishek-tiwari.com/post/polyglot-persistencepatterns/
Polyglot persistence
•  Polyglot Persistence: EclipseLink with MongoDB
and Derby
–  http://java.dzone.com/articles/polyglot-persistence-0/

•  D. Ghosh (2010) Multiparadigm data storage for
enterprise applications. IEEE Software. Vol. 27,
No. 5, pp. 57-60
Performance benchmarks ...
•  Yahoo Cloud Serving Benchmark
–  http://research.yahoo.com/node/3202/
–  http://altoros.com/nosql-research
–  http://www.slideshare.net/tazija/evaluating-nosqlperformance-time-for-benchmarking/

•  Benchmarking Couchbase Server
–  http://www.slideshare.net/Couchbase/t1-s4couchbase-performancebenchmarkingv34/
Performance benchmarks ...
•  Ultra-High Performance NoSQL Benchmarking
–  http://thumbtack.net/solutions/
ThumbtackWhitePaper.html

•  Benchmarking Top NoSQL Databases
–  http://www.datastax.com/resources/whitepapers/
benchmarking-top-nosql-databases
Performance benchmarks ...
•  MongoDB Performance Pitfalls -- Behind The
Scenes
–  http://blog.trackerbird.com/content/mongodbperformance-pitfalls-behind-the-scenes/

•  MySQL vs. MongoDB Disk Space Usage
–  http://blog.trackerbird.com/content/mysql-vsmongodb-disk-space-usage/

•  MongoDB: Scaling write performance
–  http://www.slideshare.net/daumdna/mongodb-scalingwrite-performance/
Performance benchmarks ...
•  Can the Elephants Handle the NoSQL
Onslaught?
–  http://vldb.org/pvldb/vol5/
p1712_avriliafloratou_vldb2012.pdf

•  Solving Big Data Challenges for Enterprise
Application Performance Management
–  http://vldb.org/pvldb/vol5/
p1724_tilmannrabl_vldb2012.pdf

•  NoSQL RDF
–  http://ribs.csres.utexas.edu/nosqlrdf/index.php
Performance benchmarks
•  Benchmarking Graph Databases
–  http://istc-bigdata.org/index.php/benchmarking-graphdatabases/

•  Benchmarking Graph Databases -- Updates
–  http://istc-bigdata.org/index.php/benchmarking-graphdatabases-updates/

•  Linked Data Benchmark Council
–  http://ldbc.eu/
Stress testing
•  Jepsen
–  http://www.aphyr.com/tags/jepsen

•  Jepsen: Testing the Partition Tolerance of
PostgreSQL, Redis, MongoDB and Riak
–  http://www.infoq.com/articles/jepsen/

•  The Man Who Tortures Databases
–  http://www.informationweek.com/software/
information-management/the-man-who-torturesdatabases/240160850/
BI/Analytics
•  BI/Analytics on NoSQL: Review of Architectures
Part 1
–  http://www.dataversity.net/bianalytics-on-nosqlreview-of-architectures-part-1/

•  BI/Analytics on NoSQL: Review of Architectures
Part 2
–  http://www.dataversity.net/bianalytics-on-nosqlreview-of-architectures-part-2/
Various graphics ...
•  NoSQL LinkedIn Skills Index -- September 2013
–  http://blogs.the451group.com/
information_management/2013/10/01/nosql-linkedinskills-index-september-2013/

•  Updated Database Landscape map -- June 2013
–  http://blogs.the451group.com/
information_management/2013/06/10/updateddatabase-landscape-map-june-2013/
Various graphics ...
•  Necessity is the mother of NoSQL
–  http://blogs.the451group.com/
information_management/2011/04/20/necessity-isthe-mother-of-nosql/

•  NoSQL, Heroku, and You
–  https://blog.heroku.com/archives/2010/7/20/nosql/
Various graphics
•  The NoSQL vs. SQL hoopla, another turn of the
screw!
–  http://www.parelastic.com/blog/nosql-vs-sql-hooplaanother-turn-screw/

•  Navigating the Database Universe
–  http://www.slideshare.net/lisapaglia/navigating-thedatabase-universe/
Discussion fora
•  LinkedIn NoSQL
–  http://www.linkedin.com/groups?gid=2085042

•  LinkedIn NewSQL
–  http://www.linkedin.com/groups/NewSQL-4135938

•  Google groups
–  http://groups.google.com/group/nosql-discussion

•  Quora
–  https://www.quora.com/NoSQL/
NoSQL jokes/humour ...
•  LinkedIn discussion thread
–  http://www.linkedin.com/groups/NoSQL-JokesHumour-2085042.S.177321213

•  NoSQL Better Than MySQL?
–  http://www.youtube.com/watch?v=QU34ZVD2ylY
–  Shorter version of “Episode 1 - MongoDB is Web
Scale”

•  say No! No! and No! (=NoSQL Parody)
–  http://www.youtube.com/watch?v=fXc-QDJBXpw
NoSQL jokes/humour
•  When someone brags about scaling MongoDB
to a whopping 100GB
–  http://dbareactions.tumblr.com/post/62989609976/
when-someone-brags-about-scaling-mongodb-to-a

•  C.R.U.D.
–  http://crudcomic.tumblr.com/

•  Twitter
–  @mongodbfacts
–  @BigDataBorat
Miscellaneous ...
•  PowerPoint template
–  http://www.articulate.com/rapid-elearning/heres-afree-powerpoint-template-how-i-made-it/

•  Autostereogram
–  http://www.all-freeware.com/images/full/46590free_stereogram_screensaver_audio___multimedia_o
ther.jpeg

•  Theatre Curtain Animations
–  http://www.slideshare.net/chinateacher1/theatercurtain-animations/
Miscellaneous ...
•  Bar and Column charts
–  http://www.diychart.com/

•  Newspaper headlines
–  http://www.imagechef.com/ic/make.jsp?
tid=Newspaper+Headline

•  Pie charts
–  http://www.onlinecharttool.com/
Miscellaneous
•  Icons and images
–  http://www.geekpedia.com/icons.php
–  http://cemagraphics.deviantart.com/
–  http://www.freestockphotos.biz/
–  http://www.graphicsfuel.com/2011/09/commentsspeech-bubble-icon-psd/
–  http://icondock.com/

Weitere ähnliche Inhalte

Was ist angesagt?

Was ist angesagt? (16)

SQL vs NoSQL: Why you’ll never dump your relations - Dave Shuttleworth, EXASOL
SQL vs NoSQL: Why you’ll never dump your relations - Dave Shuttleworth, EXASOLSQL vs NoSQL: Why you’ll never dump your relations - Dave Shuttleworth, EXASOL
SQL vs NoSQL: Why you’ll never dump your relations - Dave Shuttleworth, EXASOL
 
Data Vault 2.0: Big Data Meets Data Warehousing
Data Vault 2.0: Big Data Meets Data WarehousingData Vault 2.0: Big Data Meets Data Warehousing
Data Vault 2.0: Big Data Meets Data Warehousing
 
Strudel: Framework for Transaction Performance Analyses on SQL/NoSQL Systems
Strudel: Framework for Transaction Performance Analyses on SQL/NoSQL SystemsStrudel: Framework for Transaction Performance Analyses on SQL/NoSQL Systems
Strudel: Framework for Transaction Performance Analyses on SQL/NoSQL Systems
 
Unlocking big data with Hadoop + MySQL
Unlocking big data with Hadoop + MySQLUnlocking big data with Hadoop + MySQL
Unlocking big data with Hadoop + MySQL
 
Survey of Big Data Infrastructures
Survey of Big Data InfrastructuresSurvey of Big Data Infrastructures
Survey of Big Data Infrastructures
 
SQL vs NoSQL
SQL vs NoSQLSQL vs NoSQL
SQL vs NoSQL
 
Turn Data into Business Value – Starting with Data Analytics on Oracle Cloud ...
Turn Data into Business Value – Starting with Data Analytics on Oracle Cloud ...Turn Data into Business Value – Starting with Data Analytics on Oracle Cloud ...
Turn Data into Business Value – Starting with Data Analytics on Oracle Cloud ...
 
Company report xinglian
Company report xinglianCompany report xinglian
Company report xinglian
 
NoSQL vs SQL (by Dmitriy Beseda, JS developer and coach Binary Studio Academy)
NoSQL vs SQL (by Dmitriy Beseda, JS developer and coach Binary Studio Academy)NoSQL vs SQL (by Dmitriy Beseda, JS developer and coach Binary Studio Academy)
NoSQL vs SQL (by Dmitriy Beseda, JS developer and coach Binary Studio Academy)
 
Intro to Neo4j Webinar
Intro to Neo4j WebinarIntro to Neo4j Webinar
Intro to Neo4j Webinar
 
Future of Data Engineering
Future of Data EngineeringFuture of Data Engineering
Future of Data Engineering
 
Introduction to Neo4j
Introduction to Neo4jIntroduction to Neo4j
Introduction to Neo4j
 
The Value of Explicit Schema for Graph Use Cases
The Value of Explicit Schema for Graph Use CasesThe Value of Explicit Schema for Graph Use Cases
The Value of Explicit Schema for Graph Use Cases
 
Company report xinglian
Company report xinglianCompany report xinglian
Company report xinglian
 
Offload, Transform, and Present - the New World of Data Integration
Offload, Transform, and Present - the New World of Data IntegrationOffload, Transform, and Present - the New World of Data Integration
Offload, Transform, and Present - the New World of Data Integration
 
Glassbeam: Ad-hoc Analytics on Internet of Complex Things with Apache Cassand...
Glassbeam: Ad-hoc Analytics on Internet of Complex Things with Apache Cassand...Glassbeam: Ad-hoc Analytics on Internet of Complex Things with Apache Cassand...
Glassbeam: Ad-hoc Analytics on Internet of Complex Things with Apache Cassand...
 

Andere mochten auch (7)

Smart classes.1pptx
Smart classes.1pptxSmart classes.1pptx
Smart classes.1pptx
 
Halloween piiajaveroonika
Halloween piiajaveroonikaHalloween piiajaveroonika
Halloween piiajaveroonika
 
Comercio
ComercioComercio
Comercio
 
SEGURIDAD DEL USO DE MEDICAMENTOS: INHIBIDORES DE LA BOMBA DE PROTONES, ¿PARA...
SEGURIDAD DEL USO DE MEDICAMENTOS: INHIBIDORES DE LA BOMBA DE PROTONES, ¿PARA...SEGURIDAD DEL USO DE MEDICAMENTOS: INHIBIDORES DE LA BOMBA DE PROTONES, ¿PARA...
SEGURIDAD DEL USO DE MEDICAMENTOS: INHIBIDORES DE LA BOMBA DE PROTONES, ¿PARA...
 
Почему круто быть девочкой гиком
Почему круто быть девочкой гикомПочему круто быть девочкой гиком
Почему круто быть девочкой гиком
 
Learn BEM: CSS Naming Convention
Learn BEM: CSS Naming ConventionLearn BEM: CSS Naming Convention
Learn BEM: CSS Naming Convention
 
How to Build a Dynamic Social Media Plan
How to Build a Dynamic Social Media PlanHow to Build a Dynamic Social Media Plan
How to Build a Dynamic Social Media Plan
 

Ähnlich wie Considerations for using NoSQL technology on your next IT project - Akmal Chaudhri

The CIOs Guide to NoSQL
The CIOs Guide to NoSQLThe CIOs Guide to NoSQL
The CIOs Guide to NoSQL
DATAVERSITY
 

Ähnlich wie Considerations for using NoSQL technology on your next IT project - Akmal Chaudhri (20)

NoSQL
NoSQLNoSQL
NoSQL
 
On nosql
On nosqlOn nosql
On nosql
 
NoSQL Now! Webinar Series: Innovations in NoSQL Query Languages
NoSQL Now! Webinar Series: Innovations in NoSQL Query Languages  NoSQL Now! Webinar Series: Innovations in NoSQL Query Languages
NoSQL Now! Webinar Series: Innovations in NoSQL Query Languages
 
NoSQL and MongoDB Introdction
NoSQL and MongoDB IntrodctionNoSQL and MongoDB Introdction
NoSQL and MongoDB Introdction
 
DDJ_102113
DDJ_102113DDJ_102113
DDJ_102113
 
NoSQL Introduction
NoSQL IntroductionNoSQL Introduction
NoSQL Introduction
 
NoSQL Introduction
NoSQL IntroductionNoSQL Introduction
NoSQL Introduction
 
DataStax C*ollege Credit: What and Why NoSQL?
DataStax C*ollege Credit: What and Why NoSQL?DataStax C*ollege Credit: What and Why NoSQL?
DataStax C*ollege Credit: What and Why NoSQL?
 
The CIOs Guide to NoSQL
The CIOs Guide to NoSQLThe CIOs Guide to NoSQL
The CIOs Guide to NoSQL
 
NoSQL databases - An introduction
NoSQL databases - An introductionNoSQL databases - An introduction
NoSQL databases - An introduction
 
By Popular Demand: The Rise of Elastic SQL
By Popular Demand: The Rise of Elastic SQLBy Popular Demand: The Rise of Elastic SQL
By Popular Demand: The Rise of Elastic SQL
 
Why no sql_ibm_cloudant
Why no sql_ibm_cloudantWhy no sql_ibm_cloudant
Why no sql_ibm_cloudant
 
Session 1 Introduction to NoSQL.pptx
 Session 1 Introduction to NoSQL.pptx Session 1 Introduction to NoSQL.pptx
Session 1 Introduction to NoSQL.pptx
 
Graph databases and OrientDB
Graph databases and OrientDBGraph databases and OrientDB
Graph databases and OrientDB
 
Moving from SQL Server to MongoDB
Moving from SQL Server to MongoDBMoving from SQL Server to MongoDB
Moving from SQL Server to MongoDB
 
Webinar: The Future of SQL
Webinar: The Future of SQLWebinar: The Future of SQL
Webinar: The Future of SQL
 
Business Intelligence & NoSQL Databases
Business Intelligence & NoSQL DatabasesBusiness Intelligence & NoSQL Databases
Business Intelligence & NoSQL Databases
 
One Database Countless Possibilities for Mission-critical Applications
One Database Countless Possibilities for Mission-critical ApplicationsOne Database Countless Possibilities for Mission-critical Applications
One Database Countless Possibilities for Mission-critical Applications
 
Big Data, NoSQL with MongoDB and Cassasdra
Big Data, NoSQL with MongoDB and CassasdraBig Data, NoSQL with MongoDB and Cassasdra
Big Data, NoSQL with MongoDB and Cassasdra
 
No sql databases
No sql databasesNo sql databases
No sql databases
 

Kürzlich hochgeladen

Kürzlich hochgeladen (20)

How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
 
Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 

Considerations for using NoSQL technology on your next IT project - Akmal Chaudhri

  • 1. Considerations for using {"no":"SQL"} technology on your next IT project Akmal B. Chaudhri (艾克摩 曹理)
  • 2. Abstract Over the past few years, we have seen the emergence and growth in NoSQL technology. This has attracted interest from organizations looking to solve new business problems. There are also examples of how this technology has been used to bring practical and commercial benefits to some organizations. However, since it is still an emerging technology, careful consideration is required in finding the relevant developer skills and choosing the right product. This presentation will discuss these issues in greater detail. In particular, it will focus on some of the leading NoSQL products and discuss their architectures and suitability for different problems
  • 4. In a packed program ... •  •  •  •  •  •  •  •  •  •  Introduction Market analysis NoSQL Security and vulnerability Polyglot persistence Benchmarks and performance BI/Analytics NoSQL alternatives Summary Resources
  • 5. In a packed program ... •  •  •  •  •  •  •  •  •  •  Introduction Market analysis NoSQL Security and vulnerability Polyglot persistence Benchmarks and performance BI/Analytics NoSQL alternatives Summary Resources
  • 6. In a packed program ... •  •  •  •  •  •  •  •  •  •  Introduction Market analysis NoSQL Security and vulnerability Polyglot persistence Benchmarks and performance BI/Analytics NoSQL alternatives Summary Resources
  • 7. In a packed program ... •  •  •  •  •  •  •  •  •  •  Introduction Market analysis NoSQL Security and vulnerability Polyglot persistence Benchmarks and performance BI/Analytics NoSQL alternatives Summary Resources
  • 8. In a packed program ... •  •  •  •  •  •  •  •  •  •  Introduction Market analysis NoSQL Security and vulnerability Polyglot persistence Benchmarks and performance BI/Analytics NoSQL alternatives Summary Resources
  • 10. My background •  ~25 years experience in IT –  –  –  –  –  –  –  Developer (Reuters) Academic (City University) Consultant (Logica) Technical Architect (CA) Senior Architect (Informix) Senior IT Specialist (IBM) TI (Hortonworks) •  Broad industry experience •  Worked with various technologies –  Programming languages –  IDE –  Database Systems •  Client-facing roles –  Developers –  Senior executives –  Journalists •  Community outreach •  10 books, many presentations
  • 11. History Have you run into limitations with traditional relational databases? Don’t mind trading a query language for scalability? Or perhaps you just like shiny new things to try out? Either way this meetup is for you. Join us in figuring out why these new fangled Dynamo clones and BigTables have become so popular lately. Source: http://nosql.eventbrite.com/
  • 12.
  • 13. Your road leads to NoSQL? NoSQL NoSQL NoSQL NoSQL NoSQL NoSQL NoSQL NoSQL
  • 15.
  • 16. Magic quadrant ... hot SQL lame DB ugly Source: After “say No! No! and No! (=NoSQL Parody)” Jens Dittrich (2013) cool
  • 18. Innovation adoption lifecycle Source: http://en.wikipedia.org/wiki/Technology_adoption_lifecycle
  • 22. Today
  • 23. The way developers really think XML NoSQL OO
  • 24. Object vs. Relational Source: Inspired by comments from Esther Dyson during the 1990s
  • 25. XML vs. Relational Source: Inspired by https://webspace.utexas.edu/curtispe/NatConf/tam2005.html
  • 26. NoSQL vs. Relational Source: Inspired by http://www.slideshare.net/mongodb/webinar-the-opex-business-plan-for-nosql/ and http://www.slideshare.net/lj101197/couchbase-overview033113long/
  • 28. NoSQL is developer-friendly Other Stakeholders Developers
  • 29. But ... Riak ... We’re talking about nearly a year of learning.[1] Things I wish I knew about MongoDB a year ago[2] I am learning Cassandra. It is not easy.[3] [1] http://productionscale.com/blog/2011/11/20/building-an-application-upon-riak-part-1.html [2] http://snmaynard.com/2012/10/17/things-i-wish-i-knew-about-mongodb-a-year-ago/ [3] http://planetcassandra.org/blog/post/datastax-java-driver-for-apache-cassandra
  • 32. Extra! extra! ... Source: Inspired by “The Next Big Thing 2012” The Wall Street Journal 27 September 2012
  • 35. Extra! extra! ... Source: Inspired by “MongoDB: Second Round” Thomas Jaspers 8 November 2012
  • 36. Extra! extra! ... Source: Inspired by “Why MongoDB is Awesome” John Nunemaker 15 May 2010 and “Why Neo4J is awesome in 5 slides” Florent Biville 29 October 2012
  • 39. Extra! extra! ... Source: Inspired by “Saturday Night Live” Season 1 Episode 9 (1976)
  • 40. Extra! extra! Source: Inspired by the movie “Airplane!” (1980)
  • 41. Past proclamations of the imminent demise of relational technology •  Object databases vs. relational –  GemStone, ObjectStore, Objectivity, etc. •  In-memory databases vs. relational –  TimesTen, SolidDB, etc. •  Persistence frameworks vs. relational –  Hibernate, OpenJPA, etc. •  XML databases vs. relational –  Tamino, BaseX, etc. •  Column-store databases vs. relational –  Sybase IQ, Vertica, etc.
  • 43. NoSQL market size ... •  Private companies do not publish results •  Venture Capital (VC) funding 10s/100s of millions of US $[1] •  NoSQL software revenue was US $20 million in 2011[2] [1] http://blogs.the451group.com/information_management/2011/11/15/ [2] http://blogs.the451group.com/information_management/2012/05/
  • 44. NoSQL market size Source: http://wikibon.org/wiki/v/Big_Data_Vendor_Revenue_and_Market_Forecast_2012-2017
  • 45. NoSQL job trends Example: 100,000 x 0.1 % = 100 jobs! Source: http://regulargeek.com/2012/08/30/nosql-job-trends-august-2012/ (October 2013)
  • 46. NoSQL jobs in the UK •  Database and Business Intelligence –  MongoDB (901) –  Cassandra (363) –  Redis (292) –  HBase (146) –  CouchDB (141) –  Hive (130) –  Couchbase (120) Source: http://www.itjobswatch.co.uk/jobs/uk/nosql.do (October 2013)
  • 47. NoSQL LinkedIn skills index ... Source: 451 Research
  • 48. NoSQL LinkedIn skills index Source: 451 Research
  • 49. NoSQL vs. the world ... Source: After http://www.kchodorow.com/blog/2011/05/05/nosql-vs-the-world/ (October 2013)
  • 50. NoSQL vs. the world ... Source: After http://www.kchodorow.com/blog/2011/05/05/nosql-vs-the-world/ (October 2013)
  • 51. NoSQL vs. the world Source: After http://www.kchodorow.com/blog/2011/05/05/nosql-vs-the-world/ (October 2013)
  • 52. DB-Engines ranking ... Source: http://db-engines.com/en/ranking/ (October 2013)
  • 54. NoSQL in enterprise apps Source: “Cloud Software: Where Next?” InformationWeek August 2013
  • 55. Use of NoSQL products Source: “State of Database Technology 2013” InformationWeek April 2013
  • 56. Hosting example ... Source: Jelastic, used with permission
  • 57. Hosting example Source: Jelastic, used with permission
  • 58. NoSQL
  • 59.
  • 60.
  • 61. “The Stars, Like Dust” ... a squadron of small, flitting ships that had struck and vanished, then struck again, and made scrap of the lumbering titanic ships that had opposed them ... abandoning power alone, stressed speed and co-operation ... -- Isaac Asimov Source: “The Stars, Like Dust” Isaac Asimov (1951)
  • 64. Why did NoSQL datastores arise? •  Some applications need very few database features, but need high scale •  Desire to avoid data/schema pre-design altogether for simple applications •  Need for a low-latency, low-overhead API to access data •  Simplicity -- do not need fancy indexing -- just fast lookup by primary key
  • 65. NoSQL drivers Source: Couchbase NoSQL Survey (December 2011)
  • 67. Big data infrastructure Source: “Analytics: The real-world use of big data” IBM and University of Oxford (October 2012)
  • 68. Scenario where NoSQL is useful A.N. Other ownsCar 2000 VW A.N. Other ownsHouse 123 High St, London A.N. Other ownsComp 2007 MacBook Pro
  • 69. Brewer’s CAP Theorem ... ACID Consistency CA Availability AP ? CP Partition Tolerance BASE
  • 71. ACID vs. BASE ... •  •  •  •  Atomicity Consistency Isolation Durability •  Basically Available •  Soft state •  Eventual consistency
  • 72. ACID vs. BASE ACID •  Strong consistency •  Isolation •  Focus on “commit” •  Nested transactions •  Conservative (pessimistic) •  Availability •  Difficult evolution BASE •  Weak consistency •  Availability first •  Best effort •  Approximate answers OK •  Aggressive (optimistic) •  Simpler, faster •  Easier evolution Source: After “Towards Robust Distributed Systems” Eric Brewer (2000)
  • 73. But ... ... we find developers spend a significant fraction of their time building extremely complex and error-prone mechanisms to cope with eventual consistency and handle data that may be out of date. We think this is an unacceptable burden to place on developers and that consistency problems should be solved at the database level. Source: http://research.google.com/pubs/pub41344.html
  • 74. Tuneable CAP •  Examples –  Cassandra –  Riak
  • 75. Source: 451 Research, used with permission
  • 76. How many systems? ... There are a lot of Key/Value stores and distributed schema-free Document Oriented Databases out there. They’re springing up like weeds in a spring garden. And folks love to blog about them and/or talk about how their favorite is better than the others (or MySQL). -- Jeremy Zawodny Source: http://blog.zawodny.com/2010/03/28/nosql-is-software-darwinism/
  • 77. How many systems? Source: http://nosql-database.org/ (October 2013)
  • 78. Major categories of NoSQL ... Type Document store Column store Key-value store Graph store Examples
  • 79. Source: 451 Research, used with permission
  • 80. Major categories of NoSQL Document store Key Column store Document (collection of keyvalues) Key CF1: C1 CF1: C2 Node 1 Key Binary Data Key CF3: C1 Node 2 Properties Key Properties Relationship 1 Key Key-value store CF2: C1 Properties Graph store
  • 81. Source: Ilya Katsov, used with permission
  • 83. Document store •  Represent rich, hierarchical data structures, reducing the need for multi-table joins •  Structure of the documents need not be known a priori, can be variable, and evolve instantly, but a query can understand the contents of a document •  Use cases: rapid ingest and delivery for evolving schemas and web-based objects
  • 84. MongoDB example { { "namespace 1": any json object, "namespace 2": any json object, ... "namespace 1": [ { "_id": "key 1", "property 1": "value", "property 2": { "property 3": "value", "property 4": [ "value", "value", "value" ] }, ... }, ... ] } } Source: Frank Denis, used with permission
  • 85.
  • 86. Connection private static final String DBNAME = "demodb"; private static final String COLLNAME = "people"; ... MongoClient mongoClient = new MongoClient("localhost", 27017); DB db = mongoClient.getDB(DBNAME); DBCollection collection = db.getCollection(COLLNAME); System.out.println("Connected to MongoDB");
  • 87. Create BasicDBObject document = new BasicDBObject(); List<String> likes = new ArrayList<String>(); likes.add("satay"); likes.add("kebabs"); likes.add("fish-n-chips"); document.put("name", "akmal"); document.put("age", 40); document.put("date", new Date()); document.put("likes", likes); collection.insert(document);
  • 88. Read BasicDBObject document = new BasicDBObject(); document.put("name", "akmal"); DBCursor cursor = collection.find(document); while (cursor.hasNext()) System.out.println(cursor.next()); cursor.close();
  • 89. Update BasicDBObject document = new BasicDBObject(); document.put("name", "akmal"); BasicDBObject newDocument = new BasicDBObject(); newDocument.put("age", 29); BasicDBObject updateObj = new BasicDBObject(); updateObj.put("$set", newDocument); collection.update(document, updateObj);
  • 90. Delete BasicDBObject document = new BasicDBObject(); document.put("name", "akmal"); collection.remove(document);
  • 91.
  • 92. Connection var async = require('async'); var MongoClient = require('mongodb').MongoClient; MongoClient.connect("mongodb://localhost:27017/demodb", function(err, db) { if (err) { return console.log(err); } console.log("Connected to MongoDB"); var collection = db.collection('people'); var document = { 'name':'akmal', 'age':40, 'date':new Date(), 'likes':['satay', 'kebabs', 'fish-n-chips'] };
  • 93. Create function (callback) { collection.insert(document, {w:1}, function(err, result) { if (err) { return callback(err); } callback(); }); },
  • 94. Read function (callback) { collection.findOne({'name':'akmal'}, function(err, item) { if (err) { return callback(err); } console.log(item); callback(); }); },
  • 95. Update function (callback) { collection.update({'name':'akmal'}, {$set:{'age':29}}, {w:1}, function(err, result) { if (err) { return callback(err); } callback(); }); },
  • 96. Delete function (callback) { collection.remove({'name':'akmal'}, function(err, result) { if (err) { return callback(err); } callback(); }); },
  • 97. Column store ... •  Manage structured data, with multiple-attribute access •  Columns are grouped together in “columnfamilies/groups”; each storage block contains data from only one column/column set to provide data locality for “hot” columns •  Column groups defined a priori, but support variable schemas within a column group
  • 98. Column store •  Scale using replication, multi-node distribution for high availability and easy failover •  Optimized for writes •  Use cases: high throughput verticals (activity feeds, message queues), caching, web operations
  • 99. Cassandra example { { "column family 1": { "key 1": { "property 1": "value", "property 2": "value" }, "key 2": { "property 1": "value", "property 4": "value", "property 5": "value" } }, ... "column family 2": { "super key 1": { "key 1": { "property 1": "value", "property 2": "value" }, "key 2": { "property 1": "value", "property 4": "value", "property 5": "value" }, ... }, ... }, ... } } Source: Frank Denis, used with permission
  • 100.
  • 102. Create String query = "BEGIN BATCHn" + "INSERT INTO people (name, age, date, likes) VALUES ('akmal', 40, '" + new Date() + "', {'satay', 'kebabs', 'fish-n-chips'})n" + "APPLY BATCH;"; Statement statement = connection.createStatement(); statement.executeUpdate(query); statement.close();
  • 103. Read String query = "SELECT * FROM people"; Statement statement = connection.createStatement(); ResultSet cursor = statement.executeQuery(query); while (cursor.next()) for (int j = 1; j < cursor.getMetaData().getColumnCount()+1; j++) System.out.printf("%-10s: %s%n", cursor.getMetaData().getColumnName(j), cursor.getString(cursor.getMetaData().getColumnName(j))); cursor.close(); statement.close();
  • 104. Update String query = "UPDATE people SET age = 29 WHERE name = 'akmal'"; Statement statement = connection.createStatement(); statement.executeUpdate(query); statement.close();
  • 105. Delete String query = "BEGIN BATCHn" + "DELETE FROM people WHERE name = 'akmal'n" + "APPLY BATCH;"; Statement statement = connection.createStatement(); statement.executeUpdate(query); statement.close();
  • 106. Key-value store •  Simplest NoSQL stores, provide low-latency writes but single key/value access •  Store data as a hash table of keys where every key maps to an opaque binary object •  Easily scale across many machines •  Use-cases: applications that require massive amounts of simple data (sensor, web operations), applications that require rapidly changing data (stock quotes), caching
  • 107. Redis and Riak examples { { database number: { "key 1": "value", "key 2": [ "value", "value", "value" ], "key 3": [ { "value": "value", "score": score }, { "value": "value", "score": score }, ... ], "key 4": { "property 1": "value", "property 2": "value", "property 3": "value", ... }, ... } } Source: Frank Denis, used with permission "bucket 1": { "key 1": document + content-type, "key 2": document + content-type, "link to another object 1": URI of other bucket/key, "link to another object 2": URI of other bucket/key, }, "bucket 2": { "key 3": document + content-type, "key 4": document + content-type, "key 5": document + content-type ... }, ... }
  • 108.
  • 109. Connection Jedis j = new Jedis("localhost", 6379); j.connect(); System.out.println("Connected to Redis");
  • 110. Create String id = Long.toString(j.incr("global:nextUserId")); j.set("uid:" + id + ":name", "akmal"); j.set("uid:" + id + ":age", "40"); j.set("uid:" + id + ":date", new Date().toString()); j.sadd("uid:" + id + ":likes", "satay"); j.sadd("uid:" + id + ":likes", "kebabs"); j.sadd("uid:" + id + ":likes", "fish-n-chips"); j.hset("uid:lookup:name", "akmal", id);
  • 111. Read String id = j.hget("uid:lookup:name", "akmal"); print("name ", j.get("uid:" + id + ":name")); print("age ", j.get("uid:" + id + ":age")); print("date ", j.get("uid:" + id + ":date")); print("likes ", j.smembers("uid:" + id + ":likes"));
  • 112. Update String id = j.hget("uid:lookup:name", "akmal"); j.set("uid:" + id + ":age", "29");
  • 113. Delete String id = j.hget("uid:lookup:name", "akmal"); j.del("uid:" + id + ":name"); j.del("uid:" + id + ":age"); j.del("uid:" + id + ":date"); j.del("uid:" + id + ":likes");
  • 114. Graph store •  Use nodes, relationships between nodes, and key-value properties •  Access data using graph traversal, navigating from start nodes to related nodes according to graph algorithms •  Faster for associative data sets •  Use cases: storing and reasoning on complex and connected data, such as inferencing applications in healthcare, government, telecom, oil, performing closure on social networking graphs
  • 115.
  • 116.
  • 117. Connection private static final String DB_PATH = "C:/neo4j-community-1.8.2/data/graph.db"; private static enum RelTypes implements RelationshipType { LIKES } ... graphDb = new GraphDatabaseFactory().newEmbeddedDatabase(DB_PATH); registerShutdownHook(graphDb); System.out.println("Connected to Neo4j");
  • 118. Create Transaction tx = graphDb.beginTx(); try { firstNode = graphDb.createNode(); firstNode.setProperty("name", "akmal"); firstNode.setProperty("age", 40); firstNode.setProperty("date", new Date().toString()); secondNode = graphDb.createNode(); secondNode.setProperty("food", "satay, kebabs, fish-n-chips"); relationship = firstNode.createRelationshipTo(secondNode, RelTypes.LIKES); relationship.setProperty("likes", "likes"); tx.success(); } finally { tx.finish(); }
  • 119. Read Transaction tx = graphDb.beginTx(); try { print("name", firstNode.getProperty("name")); print("age", firstNode.getProperty("age")); print("date", firstNode.getProperty("date")); print("likes", secondNode.getProperty("food")); tx.success(); } finally { tx.finish(); }
  • 120. Update Transaction tx = graphDb.beginTx(); try { firstNode.setProperty("age", 29); tx.success(); } finally { tx.finish(); }
  • 121. Delete Transaction tx = graphDb.beginTx(); try { firstNode.getSingleRelationship(RelTypes.LIKES, Direction.OUTGOING).delete(); firstNode.delete(); secondNode.delete(); tx.success(); } finally { tx.finish(); }
  • 122. NoSQL use cases ... •  Online/mobile gaming –  Leaderboard (high score table) management –  Dynamic placement of visual elements –  Game object management –  Persisting game/user state information –  Persisting user generated data (e.g. drawings) •  Display advertising on web sites –  Ad Serving: match content with profile and present –  Real-time bidding: match cookie profile with advert inventory, obtain bids, and present advert
  • 123. NoSQL use cases •  Dynamic content management and publishing (news and media) –  Store content from distributed authors, with fast retrieval and placement –  Manage changing layouts and user generated content •  E-commerce/social commerce –  Storing frequently changing product catalogs •  Social networking/online communities •  Communications –  Device provisioning
  • 124. Use case requirements ... •  Schema flexibility and development agility –  Application not constrained by fixed pre-defined schema –  Application drives the schema –  Ability to develop a minimal application rapidly, and iterate quickly in response to customer feedback –  Ability to quickly add, change or delete “fields” or data-elements –  Ability to handle a mix of structured and unstructured data –  Easier, faster programming, so faster time to market and quick to adapt
  • 125. Use case requirements ... •  Consistent low latency, even under high load –  Typically milliseconds or sub-milliseconds, for reads and writes –  Even with millions of users •  Dynamic elasticity –  Rapid horizontal scalability –  Ability to add or delete nodes dynamically –  Application transparent elasticity, such as automatic (re)distribution of data, if needed –  Cloud compatibility
  • 126. Use case requirements •  High availability –  24 x 7 x 365 availability –  (Today) Requires data distribution and replication –  Ability to upgrade hardware or software without any down time •  Low cost –  Commonly available hardware –  Lower cost software, such as open source or pay-peruse in cloud –  Reduced need for database administration, and maintenance
  • 129. MongoDB security The most effective way to reduce risk for MongoDB deployments is to run your entire MongoDB deployment, including all MongoDB components (i.e. mongod, mongos and application instances) in a trusted environment. Source: http://docs.mongodb.org/manual/administration/security/ (October 2012)
  • 130. CouchDB security When you start out fresh, CouchDB allows any request to be made by anyone ... While it is incredibly easy to get started with CouchDB that way, it should be obvious that putting a default installation into the wild is adventurous. Any rogue client could come along and delete a database. relax Source: http://guide.couchdb.org/draft/security.html (October 2012)
  • 131. Redis security Redis is designed to be accessed by trusted clients inside trusted environments. This means that usually it is not a good idea to expose the Redis instance directly to the internet or, in general, to an environment where untrusted clients can directly access the Redis TCP port or UNIX socket. Source: http://redis.io/topics/security/ (October 2012)
  • 132. NoSQL injection attacks ... •  NoSQL systems are vulnerable •  Various types of attacks •  Understand the vulnerabilities and consequences
  • 133. NoSQL injection attacks •  Popular NoSQL products will attract more interest and scrutiny •  Features of some programming languages, e.g. PHP •  Server-Side JavaScript (SSJS)
  • 135. Polyglot persistence User Sessions Financial Data Shopping Cart Recommendations Product Catalog Reporting Analytics User Activity Logs Source: Adapted from http://martinfowler.com/bliki/PolyglotPersistence.html
  • 136. Polyglot persistence examples •  Disney –  Cassandra, Hadoop, MongoDB •  Interactive Mediums –  CouchDB, MySQL •  Mendeley –  HBase, MongoDB, Solr, Voldemort •  Netflix –  Cassandra, Hadoop/HBase, RDBMS, SimpleDB •  Twitter –  Cassandra, FlockDB, Hadoop/HBase, MySQL
  • 137. Polyglot persistence •  NoSQL product specialization requires developer knowledge and skills for each platform •  Different APIs –  Develop public API for each NoSQL store (Disney)
  • 138. Public API for NoSQL store In some cases, the team decided to hide the platform’s complexity from users; not to facilitate its use, but to keep loosecannon developers from doing something crazy that could take down the whole cluster. It could show them all the controls and knobs in a NoSQL database, but “they tend to shoot each other,” Jacob said. “First they shoot themselves, then they shoot each other.” Source: “How Disney built a big data platform on a startup budget” Derrick Harris (2012)
  • 139. Asynchronous message passing (Actors) Module 1 (Actors) Module 3 Graph-structured domain rules Document structures Columnar data Access with decentralization Document structures with offline processing Module 2 Source: Debasish Ghosh, used with permission Module 4
  • 140. Multi-paradigm example •  Application that routes picking baskets for inventory in a warehouse •  A graph with bins of inventory (nodes) along aisles (edges) •  Store graph in Neo4j for performance •  Asynchronously persist in MySQL for reporting •  Move data using asynchronous message queue •  Faster performance, easier development, simpler scaling, and reduced cost Source: http://akfpartners.com/techblog/2011/06/21/multi-paradigm-data-storage-architectures/
  • 141. Polyglot persistence with EclipseLink JPA •  Java Persistence API (JPA) for access to NoSQL systems •  Annotations and XML to identify stored NoSQL entities •  An application can use multiple database systems •  Single composite Persistence Unit (PU) supports relational and non-relational data •  Support for MongoDB and Oracle NoSQL with other products planned
  • 143. Yahoo Cloud Serving BM ... •  Originally Tested Systems –  Cassandra, HBase, Yahoo!’s PNUTS, sharded MySQL •  Tier 1 (performance) –  Latency by increasing the server load •  Tier 2 (scalability) –  Scalability by increasing the number of servers
  • 144. Yahoo Cloud Serving BM •  Yahoo Cloud Serving Benchmark (YCSB) –  Research paper –  Slide deck •  Altoros Report –  50+ pages •  Thumbtack Report –  40+ pages
  • 145. “Can the Elephants Handle the NoSQL Onslaught?” •  DSS Workload (TPC-H) –  Hive vs. Parallel Data Warehouse •  Modern OLTP Workload (YCSB) –  MongoDB vs. SQL Server •  Conclusions –  NoSQL systems are behind relational systems in performance
  • 146. Linked Data Benchmark Council •  EU-funded project •  Develop Graph and RDF benchmarks
  • 147. Stress testing •  Jepsen project –  Rigorously test how various database systems handle partitions –  Evaluate consistency •  Conclusions –  Don’t rely on vendor marketing, product documentation or “pull the plug” test
  • 149. Architectures •  •  •  •  •  •  NoSQL reports NoSQL thru and thru NoSQL + MySQL NoSQL as ETL source NoSQL programs in BI tools NoSQL via BI database (SQL) Source: Nicholas Goodman
  • 150. NoSQL via BI database (SQL) LIVE OR CACHED PENTAHO.PRPT ALL_CONTRACTS VIEWS 15 min local_ ALL_CONTRACTS DOCS view: "all" javascript, map, reduce Source: http://www.nicholasgoodman.com/bt/blog/2011/06/22/sql-access-to-couchdb-views-easy-reporting/
  • 151.
  • 153. Source: 451 Research, used with permission
  • 154. NewSQL •  Today, new challenges and requirements –  “Web changes everything” •  •  •  •  Need more OLTP throughput Need real-time analytics ACID support Preserve SQL –  Automatic query optimization •  Preserve investment –  Existing skills and tools
  • 155.
  • 156. Connection Class.forName("com.nuodb.jdbc.Driver"); Properties properties = new Properties(); properties.put("user", "dba"); properties.put("password", "goalie"); properties.put("schema", "test"); connection = DriverManager.getConnection( "jdbc:com.nuodb://localhost/test", properties); System.out.println("Connected to NuoDB");
  • 157. Create PreparedStatement statement = connection.prepareStatement( "INSERT INTO people (name, age, date, likes) VALUES (?, ?, ?, ?)"); statement.setString(1, "akmal"); statement.setInt(2, 40); statement.setString(3, new Date().toString()); statement.setString(4, "satay kebabs fish-n-chips"); statement.addBatch(); statement.executeBatch(); connection.commit();
  • 158. Read String query = "SELECT * FROM people;"; Statement statement = connection.createStatement(); ResultSet cursor = statement.executeQuery(query); while (cursor.next()) { System.out.print(cursor.getString(1) + " "); System.out.print(cursor.getInt(2) + " "); System.out.print(cursor.getString(3) + " "); System.out.println(cursor.getString(4)); } cursor.close(); statement.close();
  • 159. Update String query = "UPDATE people SET age = 29 WHERE name = 'akmal';"; Statement statement = connection.createStatement(); statement.executeUpdate(query); connection.commit(); readData(connection);
  • 160. Delete String query = "DELETE FROM people WHERE name = 'akmal';"; Statement statement = connection.createStatement(); statement.executeUpdate(query); connection.commit();
  • 161. Relational •  Vendors adding NoSQL capabilities –  Documents (e.g. XML, JSON) –  Linked data (e.g. RDF)
  • 162. Relational vs. XML vs. RDF Relational XML RDF Tables Trees Graphs Flat, highly structured Hierarchical data Linked data Rows in a table Nodes in a tree Triples describe links Fixed schema No or flexible schema Highly flexible SQL (ANSI/ISO) XPath/XQuery (W3C) SPARQL (W3C)
  • 165. Source: ParElastic, used with permission
  • 166. Relational does NoSQL Often the overhead of managing data in multiple databases is more than the advantages of the other store being faster. You can do “NoSQL” inside and around a hackable database like PostgreSQL, not just as a separate one. -- Hannu Krosing Source: http://2013.nosql-matters.org/cgn/abstracts/#abstract_hannu_krosing/
  • 169. Relational vs. NoSQL ... It is specious to compare NoSQL databases to relational databases; as you’ll see, none of the so-called “NoSQL” databases have the same implementation, goals, features, advantages, and disadvantages. So comparing “NoSQL” to “relational” is really a shell game. -- Eben Hewitt Source: “Cassandra: The Definitive Guide” Eben Hewitt (2010)
  • 171. Limitations of NoSQL •  Lack of standardized or well-defined semantics –  Transactions? Isolation levels? •  Reduced consistency for performance and scalability –  “Eventual consistency” –  “Soft commit” •  •  •  •  Limited forms of access, e.g. often no joins, etc. Proprietary interfaces Large clusters, failover, etc.? Security?
  • 173. Simple Slow Small Value of Individual Data Item Aggregate Data Value Velocity Hadoop, etc. NoSQL Data Warehouse NewSQL Traditional RDBMS Transactional Interactive Analytic Real-time Analytics Source: VoltDB, used with permission Record Lookup Historical Analytics Exploratory Analytics Data Value Application Complexity Fast Complex Large
  • 174. Understand your use case Source: http://www.techvalidate.com/tvid/F66-11B-178/
  • 175. Understand vendor-speak What vendor says What vendor means The biggest in the world The biggest one we’ve got The biggest in the universe The biggest one we’ve got There is no limit to ... It’s untested, but we don’t mind if you try it A new and unique feature Something the competition has had for ages Currently available feature We are about to start Beta testing Planned feature Something the competition has, that we wish we had too, that we might have one day Highly distributed International offices Engineered for robustness Comes in a tough box Source: “Object Databases: An Evaluation and Comparison” Bloor Research (1994)
  • 177. The great debate ... About every ten years or so, there is a “great debate” between, on the one hand, those who see the problem of data modelling through a more or less relational lens, and on the other, a noisier set of “refuseniks” who have a hot new thing to promote. The debate usually goes like this:
  • 178. The great debate ... Refuseniks: Hah! You relational people with your flat tables and silly query languages! You are so unhip! You simply cannot deal with the problem of [INSERT NEW THING HERE]. With an [INSERT NEW THING HERE]-DBMS we will finish you, and grind your bones into dust!
  • 179. The great debate R-people: You make some good points. But unfortunately a) there is an enormous amount of money invested in building scalable, efficient and reliable database management products and no one is going to drop all of that on the floor and b) you are confusing DBMS engineering decisions with theoretical questions. We plan to incorporate the best of these ideas into our products. Source: Paul Brown
  • 180. It’s the people ... ... MongoDB Day London ... the problem is the people! They all talk like this: 1.  Some problem that just doesn’t really exist (or hasn’t existed for a very long time) with relational databases 2.  MongoDB 3.  Profit! -- Gaius Hammond Source: http://gaiustech.wordpress.com/2013/04/13/mongodb-days/
  • 181. It’s the people ... most of the business people driving the Big Data NoSQL databases are data management illiterate; don’t recognize the lack of NoSQL data management facilities ... and don’t know anything about availability, referential integrity and normalized data designs. -- Dave Beulke Source: http://davebeulke.com/big-data-day-recap/
  • 182.
  • 183. Final thoughts We are clearly in the phase of a new technology adoption in which the category is hyped, its benefits over-promised, its limitations poorly understood, and its value oversold. -- Tim Berglund Source: “Saying Yes to NoSQL” Tim Berglund (2011)
  • 185. Find me on ... –  http://www.linkedin.com/in/akmalchaudhri –  http://twitter.com/akmalchaudhri –  http://www.quora.com/Akmal-Chaudhri –  http://www.facebook.com/akmal.chaudhri –  http://plus.google.com/ 105126255575427189842/ –  http://www.slideshare.net/VeryFatBoy/ –  http://www.youtube.com/VeryFatBoyVideos/
  • 187.
  • 190. History •  First NoSQL meetup –  http://nosql.eventbrite.com/ –  http://blog.oskarsson.nu/post/22996139456/nosqlmeetup •  First NoSQL meetup debrief –  http://blog.oskarsson.nu/post/22996140866/nosqldebrief •  First NoSQL meetup photographs –  http://www.flickr.com/photos/russss/sets/ 72157619711038897/
  • 191. NoSQL Search roadshow •  Multi-city tour 2013 –  Munich –  Berlin –  San Francisco –  Copenhagen –  Zurich –  Amsterdam –  London Source: http://nosqlroadshow.com/
  • 192. Web sites •  NoSQL Databases and Polyglot Persistence: A Curated Guide –  http://nosql.mypopescu.com/ •  NoSQL: Your Ultimate Guide to the NonRelational Universe! –  http://nosql-database.org/
  • 193. Free books ... •  Data Access for Highly-Scalable Solutions: Using SQL, NoSQL, and Polyglot Persistence –  http://www.microsoft.com/en-us/download/details.aspx?id=40327
  • 194. Free books ... •  The Little MongoDB Book –  http://openmymind.net/2011/3/28/The-Little-MongoDB-Book/ •  The Little Redis Book –  http://openmymind.net/2012/1/23/The-Little-Redis-Book/
  • 195. Free books ... •  CouchDB: The Definitive Guide –  http://guide.couchdb.org/ •  A Little Riak Book –  http://littleriakbook.com
  • 196. Free books •  Understanding The Top 5 Redis Performance Metrics –  http://info.datadoghq.com/top-5-redis-performance-metricsebook
  • 197. Free training CERTIFICATE CERTIFICATE Dec. 24th, 2012 Dec. 24th, 2012 This is to certify that This is to certify that Akmal Chaudhri Akmal Chaudhri successfully completed successfully completed M101: MongoDB for Developers M102: MongoDB for DBAs a course of study offered by 10gen, The MongoDB Company a course of study offered by 10gen, The MongoDB Company Dwight Merriman 10gen, Inc. Andrew Erlichson Dwight Merriman Vice President, Education 10gen, Inc. Authenticity of this certificate can be verified at https://education.10gen.com/downloads/certificates/1e73378509f046f28cbcb2212f3d7cff/Certificate.pdf 10gen, Inc. Andrew Erlichson Vice President, Education 10gen, Inc. Authenticity of this certificate can be verified at https://education.10gen.com/downloads/certificates/c0e418e393e247eb818d82d0472549f4/Certificate.pdf •  Free courses on MongoDB –  https://education.mongodb.com/
  • 198. Articles and reports •  Saying Yes to NoSQL –  http://www.nofluffjuststuff.com/s/magazine/ NFJS_theMagazine_Vol3_Issue3_May2011.pdf •  The State of NoSQL –  http://www.infoq.com/articles/State-of-NoSQL/ •  D. Feinberg, M. Adrian and N. Heudecker (2013) Magic Quadrant for Operational Database Management Systems, Gartner, ID:G00251780, 21 October 2013 –  http://info.marklogic.com/gartner-odbms.html
  • 199. White papers •  The CIO’s Guide to NoSQL –  http:// documents.dataversity .net/whitepapers/thecios-guide-tonosql.html
  • 200. Product selection ... •  101 Questions to Ask When Considering a NoSQL Database –  http://highscalability.com/blog/2011/6/15/101questions-to-ask-when-considering-a-nosqldatabase.html •  35+ Use Cases for Choosing Your Next NoSQL Database –  http://highscalability.com/blog/2011/6/20/35-usecases-for-choosing-your-next-nosql-database.html
  • 201. Product selection •  NoSQL Options Compared: Different Horses for Different Courses –  http://www.slideshare.net/tazija/nosql-optionscompared/ •  NoSQL Data Modeling Techniques –  http://highlyscalable.wordpress.com/2012/03/01/ nosql-data-modeling-techniques/ •  Choosing a NoSQL data store according to your data set –  http://00f.net/2010/05/15/choosing-a-nosql-data-storeaccording-to-your-data-set/
  • 202. Short product overviews ... •  Picking the Right NoSQL Database Tool –  http://blog.monitis.com/index.php/2011/05/22/pickingthe-right-nosql-database-tool/ •  NoSQL Databases -- A Look at Apache Cassandra –  http://blog.monitis.com/index.php/2011/05/24/nosqldatabases-a-look-at-apache-cassandra/ •  The NoSQL Databases -- A Look at HBase –  http://blog.monitis.com/index.php/2011/05/31/thenosql-databases-a-look-at-hbase/
  • 203. Short product overviews ... •  A Look at Some NoSQL Databases -- MongoDB, Redis and Basho Riak –  http://blog.monitis.com/index.php/2011/06/06/a-lookat-some-nosql-databases-mongodb-redis-and-bashoriak/ •  Picking the Right NoSQL Database, Part 4 -CouchDB and Membase –  http://blog.monitis.com/index.php/2011/06/17/pickingthe-right-nosql-database-part-4-couchdb-andmembase/
  • 204. Short product overviews •  Cassandra vs MongoDB vs CouchDB vs Redis vs Riak vs HBase vs Couchbase vs Neo4j vs Hypertable vs ElasticSearch vs Accumulo vs VoltDB vs Scalaris comparison –  http://kkovacs.eu/cassandra-vs-mongodb-vscouchdb-vs-redis/ •  vsChart.com –  http://vschart.com/list/database/
  • 205. Case studies ... •  Real World NoSQL: HBase at Trend Micro –  http://gigaom.com/cloud/real-world-nosql-hbase-attrend-micro/ •  Real World NoSQL: MongoDB at Shutterfly –  http://gigaom.com/cloud/real-world-nosql-mongodbat-shutterfly/ •  Real World NoSQL: Cassandra at Openwave –  http://gigaom.com/cloud/realworld-nosql-cassandraat-openwave/
  • 206. Case studies •  Real World NoSQL: Amazon SimpleDB at Netflix –  http://gigaom.com/cloud/real-world-nosql-amazonsimpledb-at-netflix/ •  Real World NoSQL: Membase at Tribal Crossing –  http://gigaom.com/cloud/real-world-nosql-membaseat-tribal-crossing/ •  How Disney built a big data platform on a startup budget –  http://gigaom.com/data/how-disney-built-a-big-dataplatform-on-a-startup-budget/
  • 207. Negative NoSQL comments ... •  Scaling with MongoDB –  http://opensourcebridge.org/wiki/2011/ Scaling_with_MongoDB –  https://speakerdeck.com/robotadam/postgres-aturban-airship/ •  A Year with MongoDB –  http://blog.engineering.kiip.me/post/20988881092/ayear-with-mongodb/ –  https://speakerdeck.com/mitsuhiko/a-year-ofmongodb/
  • 208. Negative NoSQL comments ... •  Why MongoDB Never Worked Out at Etsy –  http://mcfunley.com/why-mongodb-never-worked-outat-etsy/ •  Goodbye, CouchDB –  http://sauceio.com/index.php/2012/05/goodbyecouchdb/ •  Don’t use NoSQL –  https://speakerdeck.com/roidrage/dont-use-nosql/ –  http://vimeo.com/49713827/
  • 209. Negative NoSQL comments ... •  MongoDB is to NoSQL like MySQL to SQL -- in the most harmful way –  http://use-the-index-luke.com/blog/2013-10/mysql-isto-sql-like-mongodb-to-nosql •  The Genius and Folly of MongoDB –  http://nyeggen.com/blog/2013/10/18/the-genius-andfolly-of-mongodb/
  • 210. Negative NoSQL comments ... •  Do Developers Use NoSQL Because They're Too Lazy to Use RDBMS Correctly? –  http://architects.dzone.com/articles/do-developersuse-nosql/ –  http://gaiustech.wordpress.com/2013/04/13/mongodbdays/ •  The parallels between NoSQL and self-inflicted torture –  http://www.parelastic.com/blog/parallels-betweennosql-and-self-inflicted-torture/
  • 211. Negative NoSQL comments •  7 hard truths about the NoSQL revolution –  http://www.infoworld.com/d/data-management/7-hardtruths-about-the-nosql-revolution-197493 •  Google goes back to the future with SQL F1 database –  http://www.theregister.co.uk/2013/08/30/ google_f1_deepdive/
  • 212. Security ... •  NoSQL, no security? –  http://www.slideshare.net/wurbanski/nosql-nosecurity/ •  NoSQL, No Injection!? –  http://www.slideshare.net/wayne_armorize/nosql-nosql-injections-4880169/ •  Attacking MongoDB –  http://www.slideshare.net/cyber-punk/mongo-db-eng/ •  NoSQL, But Even Less Security –  http://blogs.adobe.com/asset/files/2011/04/NoSQLBut-Even-Less-Security.pdf
  • 213. Security •  NoSQL Database Security –  http://conference.auscert.org.au/conf2011/ presentations/Louis Nyffenegger V1.pdf •  Does NoSQL Mean No Security? –  http://www.darkreading.com/database-security/ 167901020/security/news/232400214/does-nosqlmean-no-security.html •  A Response To NoSQL Security Concerns –  http://www.darkreading.com/blog/232600288/aresponse-to-nosql-security-concerns.html
  • 214. Polyglot persistence ... •  Polyglot Persistence –  http://www.slideshare.net/jwoodslideshare/polyglotpersistence-two-great-tastes-that-taste-greattogether-4625004/ •  HBase at Mendeley –  http://www.slideshare.net/danharvey/hbase-atmendeley/ •  Polyglot Persistence Patterns –  http://abhishek-tiwari.com/post/polyglot-persistencepatterns/
  • 215. Polyglot persistence •  Polyglot Persistence: EclipseLink with MongoDB and Derby –  http://java.dzone.com/articles/polyglot-persistence-0/ •  D. Ghosh (2010) Multiparadigm data storage for enterprise applications. IEEE Software. Vol. 27, No. 5, pp. 57-60
  • 216. Performance benchmarks ... •  Yahoo Cloud Serving Benchmark –  http://research.yahoo.com/node/3202/ –  http://altoros.com/nosql-research –  http://www.slideshare.net/tazija/evaluating-nosqlperformance-time-for-benchmarking/ •  Benchmarking Couchbase Server –  http://www.slideshare.net/Couchbase/t1-s4couchbase-performancebenchmarkingv34/
  • 217. Performance benchmarks ... •  Ultra-High Performance NoSQL Benchmarking –  http://thumbtack.net/solutions/ ThumbtackWhitePaper.html •  Benchmarking Top NoSQL Databases –  http://www.datastax.com/resources/whitepapers/ benchmarking-top-nosql-databases
  • 218. Performance benchmarks ... •  MongoDB Performance Pitfalls -- Behind The Scenes –  http://blog.trackerbird.com/content/mongodbperformance-pitfalls-behind-the-scenes/ •  MySQL vs. MongoDB Disk Space Usage –  http://blog.trackerbird.com/content/mysql-vsmongodb-disk-space-usage/ •  MongoDB: Scaling write performance –  http://www.slideshare.net/daumdna/mongodb-scalingwrite-performance/
  • 219. Performance benchmarks ... •  Can the Elephants Handle the NoSQL Onslaught? –  http://vldb.org/pvldb/vol5/ p1712_avriliafloratou_vldb2012.pdf •  Solving Big Data Challenges for Enterprise Application Performance Management –  http://vldb.org/pvldb/vol5/ p1724_tilmannrabl_vldb2012.pdf •  NoSQL RDF –  http://ribs.csres.utexas.edu/nosqlrdf/index.php
  • 220. Performance benchmarks •  Benchmarking Graph Databases –  http://istc-bigdata.org/index.php/benchmarking-graphdatabases/ •  Benchmarking Graph Databases -- Updates –  http://istc-bigdata.org/index.php/benchmarking-graphdatabases-updates/ •  Linked Data Benchmark Council –  http://ldbc.eu/
  • 221. Stress testing •  Jepsen –  http://www.aphyr.com/tags/jepsen •  Jepsen: Testing the Partition Tolerance of PostgreSQL, Redis, MongoDB and Riak –  http://www.infoq.com/articles/jepsen/ •  The Man Who Tortures Databases –  http://www.informationweek.com/software/ information-management/the-man-who-torturesdatabases/240160850/
  • 222. BI/Analytics •  BI/Analytics on NoSQL: Review of Architectures Part 1 –  http://www.dataversity.net/bianalytics-on-nosqlreview-of-architectures-part-1/ •  BI/Analytics on NoSQL: Review of Architectures Part 2 –  http://www.dataversity.net/bianalytics-on-nosqlreview-of-architectures-part-2/
  • 223. Various graphics ... •  NoSQL LinkedIn Skills Index -- September 2013 –  http://blogs.the451group.com/ information_management/2013/10/01/nosql-linkedinskills-index-september-2013/ •  Updated Database Landscape map -- June 2013 –  http://blogs.the451group.com/ information_management/2013/06/10/updateddatabase-landscape-map-june-2013/
  • 224. Various graphics ... •  Necessity is the mother of NoSQL –  http://blogs.the451group.com/ information_management/2011/04/20/necessity-isthe-mother-of-nosql/ •  NoSQL, Heroku, and You –  https://blog.heroku.com/archives/2010/7/20/nosql/
  • 225. Various graphics •  The NoSQL vs. SQL hoopla, another turn of the screw! –  http://www.parelastic.com/blog/nosql-vs-sql-hooplaanother-turn-screw/ •  Navigating the Database Universe –  http://www.slideshare.net/lisapaglia/navigating-thedatabase-universe/
  • 226. Discussion fora •  LinkedIn NoSQL –  http://www.linkedin.com/groups?gid=2085042 •  LinkedIn NewSQL –  http://www.linkedin.com/groups/NewSQL-4135938 •  Google groups –  http://groups.google.com/group/nosql-discussion •  Quora –  https://www.quora.com/NoSQL/
  • 227. NoSQL jokes/humour ... •  LinkedIn discussion thread –  http://www.linkedin.com/groups/NoSQL-JokesHumour-2085042.S.177321213 •  NoSQL Better Than MySQL? –  http://www.youtube.com/watch?v=QU34ZVD2ylY –  Shorter version of “Episode 1 - MongoDB is Web Scale” •  say No! No! and No! (=NoSQL Parody) –  http://www.youtube.com/watch?v=fXc-QDJBXpw
  • 228. NoSQL jokes/humour •  When someone brags about scaling MongoDB to a whopping 100GB –  http://dbareactions.tumblr.com/post/62989609976/ when-someone-brags-about-scaling-mongodb-to-a •  C.R.U.D. –  http://crudcomic.tumblr.com/ •  Twitter –  @mongodbfacts –  @BigDataBorat
  • 229. Miscellaneous ... •  PowerPoint template –  http://www.articulate.com/rapid-elearning/heres-afree-powerpoint-template-how-i-made-it/ •  Autostereogram –  http://www.all-freeware.com/images/full/46590free_stereogram_screensaver_audio___multimedia_o ther.jpeg •  Theatre Curtain Animations –  http://www.slideshare.net/chinateacher1/theatercurtain-animations/
  • 230. Miscellaneous ... •  Bar and Column charts –  http://www.diychart.com/ •  Newspaper headlines –  http://www.imagechef.com/ic/make.jsp? tid=Newspaper+Headline •  Pie charts –  http://www.onlinecharttool.com/
  • 231. Miscellaneous •  Icons and images –  http://www.geekpedia.com/icons.php –  http://cemagraphics.deviantart.com/ –  http://www.freestockphotos.biz/ –  http://www.graphicsfuel.com/2011/09/commentsspeech-bubble-icon-psd/ –  http://icondock.com/