SlideShare une entreprise Scribd logo
1  sur  158
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)
• 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/
Considerations for using NoSQL technology on your next IT project - Akmal Chaudhri
Your road leads to NoSQL?
NoSQL
NoSQL
NoSQL
NoSQL
NoSQL
NoSQL
NoSQL
NoSQL
Gartner hype curve
NoSQL
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
OO
XML
NoSQL
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/home/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 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
Source: http://regulargeek.com/2012/08/30/nosql-job-trends-august-2012/ (August 2012)
Example:
100,000
x 0.08 %
= 80 jobs!
NoSQL jobs in the UK
• Database and
Business Intelligence
– MongoDB (696)
– Cassandra (291)
– Redis (242)
– CouchDB (122)
– Hive (70)
– HBase (67)
– Neo4j (52)
– Couchbase (38)
Source: http://www.itjobswatch.co.uk/jobs/uk/nosql.do (May 2013)
DB-Engines ranking ...
Source: http://db-engines.com/en/ranking/ (November 2012)
DB-Engines ranking
Source: http://db-engines.com/en/ranking/ (November 2012)
PaaS example ...
Source: Jelastic, used with permission
PaaS example
Source: Jelastic, used with permission
NoSQL
Considerations for using NoSQL technology on your next IT project - Akmal Chaudhri
Considerations for using NoSQL technology on your next IT project - Akmal Chaudhri
NoSQL The Movie!
Sequel
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)
Source: 451 Research, used with permission
How many systems?
Source: http://nosql-database.org/ (October 2012)
Major categories of NoSQL ...
Type Examples
Document store
Column store
Key-value store
Graph store
Major categories of NoSQL
Document store Column store
Key-value store Graph store
Key
Document
(collection of key-
values)
Key CF1:
C1
CF1:
C2
CF2:
C1
CF3:
C1
Key Binary Data Key Properties
Node 1
Key Properties
Node 2
Key Properties
Relationship 1
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
Considerations for using NoSQL technology on your next IT project - Akmal Chaudhri
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);
Considerations for using NoSQL technology on your next IT project - Akmal Chaudhri
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 “column-
families/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
Considerations for using NoSQL technology on your next IT project - Akmal Chaudhri
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
Considerations for using NoSQL technology on your next IT project - Akmal Chaudhri
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
Considerations for using NoSQL technology on your next IT project - Akmal Chaudhri
Considerations for using NoSQL technology on your next IT project - Akmal Chaudhri
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-per-
use in cloud
– Reduced need for database administration, and
maintenance
Security and
vulnerability
Security
NoSQL injection attacks ...
• NoSQL systems are
vulnerable
• Various types of
attacks
• Understand the
vulnerabilities and
consequences
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 loose-
cannon 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)
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
Linked Data Benchmark Council
• EU-funded project
• Develop Graph and RDF benchmarks
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
Considerations for using NoSQL technology on your next IT project - Akmal Chaudhri
NoSQL alternatives
Source: 451 Research, used with permission
What about Oracle?
Summary
Structured vs. unstructured
Structured
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)
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
Traditional RDBMS
Simple
Slow
Small
Fast
Complex
Large
ApplicationComplexity
Value of Individual Data Item Aggregate Data Value
DataValue
Velocity
InteractiveInteractive
RealReal--timetime
AnalyticsAnalytics
Record LookupRecord Lookup
HistoricalHistorical
AnalyticsAnalytics
ExploratoryExploratory
AnalyticsAnalytics
TransactionalTransactional AnalyticAnalytic
Source: VoltDB, used with permission
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)
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/105126255575427189
842/
– http://www.slideshare.net/VeryFatBoy/
– http://www.youtube.com/VeryFatBoyVideos/
Akmal B. Chaudhri
firstname.lastname@live.com
Considerations for using NoSQL technology on your next IT project - Akmal Chaudhri
{"thank":"You"}
Resources
History
• First NoSQL meetup
– http://nosql.eventbrite.com/
– http://blog.oskarsson.nu/post/22996139456/nosql-
meetup
• First NoSQL meetup debrief
– http://blog.oskarsson.nu/post/22996140866/nosql-
debrief
• First NoSQL meetup photographs
– http://www.flickr.com/photos/russss/sets/7215761971
1038897/
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 Non-
Relational Universe!
– http://nosql-database.org/
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
– https://github.com/coderoshi/little_riak_book/
Free training
• Free courses on MongoDB
– https://education.10gen.com/
Articles
• Saying Yes to NoSQL
– http://www.nofluffjuststuff.com/s/magazine/NFJS_the
Magazine_Vol3_Issue3_May2011.pdf
• The State of NoSQL
– http://www.infoq.com/articles/State-of-NoSQL/
White papers
• The CIO’s Guide to
NoSQL
– http://documents.datav
ersity.net/whitepapers/
the-cios-guide-to-
nosql.html
Product selection ...
• 101 Questions to Ask When Considering a
NoSQL Database
– http://highscalability.com/blog/2011/6/15/101-
questions-to-ask-when-considering-a-nosql-
database.html
• 35+ Use Cases for Choosing Your Next NoSQL
Database
– http://highscalability.com/blog/2011/6/20/35-use-
cases-for-choosing-your-next-nosql-database.html
Product selection
• NoSQL Options Compared: Different Horses for
Different Courses
– http://www.slideshare.net/tazija/nosql-options-
compared/
• 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-store-
according-to-your-data-set/
Short product overviews ...
• Picking the Right NoSQL Database Tool
– http://blog.monitis.com/index.php/2011/05/22/picking-
the-right-nosql-database-tool/
• NoSQL Databases -- A Look at Apache
Cassandra
– http://blog.monitis.com/index.php/2011/05/24/nosql-
databases-a-look-at-apache-cassandra/
• The NoSQL Databases -- A Look at HBase
– http://blog.monitis.com/index.php/2011/05/31/the-
nosql-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-look-
at-some-nosql-databases-mongodb-redis-and-basho-
riak/
• Picking the Right NoSQL Database, Part 4 --
CouchDB and Membase
– http://blog.monitis.com/index.php/2011/06/17/picking-
the-right-nosql-database-part-4-couchdb-and-
membase/
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-vs-
couchdb-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-at-
trend-micro/
• Real World NoSQL: MongoDB at Shutterfly
– http://gigaom.com/cloud/real-world-nosql-mongodb-
at-shutterfly/
• Real World NoSQL: Cassandra at Openwave
– http://gigaom.com/cloud/realworld-nosql-cassandra-
at-openwave/
Case studies
• Real World NoSQL: Amazon SimpleDB at Netflix
– http://gigaom.com/cloud/real-world-nosql-amazon-
simpledb-at-netflix/
• Real World NoSQL: Membase at Tribal Crossing
– http://gigaom.com/cloud/real-world-nosql-membase-
at-tribal-crossing/
• How Disney built a big data platform on a startup
budget
– http://gigaom.com/data/how-disney-built-a-big-data-
platform-on-a-startup-budget/
Security ...
• NoSQL, no security?
– http://www.slideshare.net/wurbanski/nosql-no-
security/
• NoSQL, No Injection!?
– http://www.slideshare.net/wayne_armorize/nosql-no-
sql-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/NoSQL-
But-Even-Less-Security.pdf
Security
• NoSQL Database Security
– http://conference.auscert.org.au/conf2011/presentatio
ns/Louis Nyffenegger V1.pdf
• Does NoSQL Mean No Security?
– http://www.darkreading.com/database-
security/167901020/security/news/232400214/does-
nosql-mean-no-security.html
• A Response To NoSQL Security Concerns
– http://www.darkreading.com/blog/232600288/a-
response-to-nosql-security-concerns.html
Polyglot persistence ...
• Polyglot Persistence
– http://www.slideshare.net/jwoodslideshare/polyglot-
persistence-two-great-tastes-that-taste-great-
together-4625004/
• HBase at Mendeley
– http://www.slideshare.net/danharvey/hbase-at-
mendeley/
• Polyglot Persistence Patterns
– http://abhishek-tiwari.com/post/polyglot-persistence-
patterns/
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-nosql-
performance-time-for-benchmarking/
• Benchmarking Couchbase Server
– http://www.slideshare.net/Couchbase/t1-s4-
couchbase-performancebenchmarkingv34/
Performance benchmarks ...
• Ultra-High Performance NoSQL Benchmarking
– http://thumbtack.net/solutions/ThumbtackWhitePaper.
html
• Benchmarking Top NoSQL Databases
– http://www.datastax.com/resources/whitepapers/benc
hmarking-top-nosql-databases
Performance benchmarks ...
• MongoDB Performance Pitfalls -- Behind The
Scenes
– http://blog.trackerbird.com/content/mongodb-
performance-pitfalls-behind-the-scenes/
• MySQL vs. MongoDB Disk Space Usage
– http://blog.trackerbird.com/content/mysql-vs-
mongodb-disk-space-usage/
• MongoDB: Scaling write performance
– http://www.slideshare.net/daumdna/mongodb-scaling-
write-performance/
Performance benchmarks
• Can the Elephants Handle the NoSQL
Onslaught?
– http://vldb.org/pvldb/vol5/p1712_avriliafloratou_vldb20
12.pdf
• Solving Big Data Challenges for Enterprise
Application Performance Management
– http://vldb.org/pvldb/vol5/p1724_tilmannrabl_vldb201
2.pdf
• Linked Data Benchmark Council
– http://ldbc.eu/
BI/Analytics
• BI/Analytics on NoSQL: Review of Architectures
Part 1
– http://www.dataversity.net/bianalytics-on-nosql-
review-of-architectures-part-1/
• BI/Analytics on NoSQL: Review of Architectures
Part 2
– http://www.dataversity.net/bianalytics-on-nosql-
review-of-architectures-part-2/
Various graphics ...
• Database Landscape Map -- December 2012
– http://blogs.the451group.com/information_manageme
nt/2012/12/20/database-landscape-map-december-
2012/
• Necessity is the mother of NoSQL
– http://blogs.the451group.com/information_manageme
nt/2011/04/20/necessity-is-the-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-hoopla-
another-turn-screw/
• Navigating the Database Universe
– http://www.slideshare.net/lisapaglia/navigating-the-
database-universe/
Discussion fora
• NoSQL
– http://www.linkedin.com/groups?gid=2085042
• NewSQL
– http://www.linkedin.com/groups/NewSQL-4135938
• Google groups
– http://groups.google.com/group/nosql-discussion
London meetup groups ...
• Cassandra
– http://www.meetup.com/Cassandra-London/
• MongoDB
– http://www.meetup.com/London-MongoDB-User-
Group/
• Neo4j
– http://www.meetup.com/graphdb-london/
• Redis
– http://www.meetup.com/Redis-London/
London meetup groups
• Riak
– http://www.meetup.com/riak-london/
NoSQL jokes/humour ...
• LinkedIn discussion thread
– http://www.linkedin.com/groups/NoSQL-Jokes-
Humour-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
• C.R.U.D.
– http://crudcomic.com/
– Scroll-back for some great humour on NoSQL!
Miscellaneous ...
• Powerpoint template
– http://www.articulate.com/rapid-elearning/heres-a-
free-powerpoint-template-how-i-made-it/
• Autostereogram
– http://www.all-freeware.com/images/full/46590-
free_stereogram_screensaver_audio___multimedia_
other.jpeg
• Theatre Curtain Animations
– http://www.slideshare.net/chinateacher1/theater-
curtain-animations/
Miscellaneous ...
• Bar and Column charts
– http://www.diychart.com/
• Newspaper headlines
– http://www.imagechef.com/ic/make.jsp?tid=Newspape
r+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/comments-
speech-bubble-icon-psd/
– http://icondock.com/

Contenu connexe

Tendances

SDEC2011 NoSQL Data modelling
SDEC2011 NoSQL Data modellingSDEC2011 NoSQL Data modelling
SDEC2011 NoSQL Data modellingKorea Sdec
 
Mongo DB: Operational Big Data Database
Mongo DB: Operational Big Data DatabaseMongo DB: Operational Big Data Database
Mongo DB: Operational Big Data DatabaseXpand IT
 
MongoDB Evenings DC: MongoDB - The New Default Database for Giant Ideas
MongoDB Evenings DC: MongoDB - The New Default Database for Giant IdeasMongoDB Evenings DC: MongoDB - The New Default Database for Giant Ideas
MongoDB Evenings DC: MongoDB - The New Default Database for Giant IdeasMongoDB
 
MongoDB & Hadoop - Understanding Your Big Data
MongoDB & Hadoop - Understanding Your Big DataMongoDB & Hadoop - Understanding Your Big Data
MongoDB & Hadoop - Understanding Your Big DataMongoDB
 
Using Neo4j from Java
Using Neo4j from JavaUsing Neo4j from Java
Using Neo4j from JavaNeo4j
 
Analyze and visualize non-relational data with DocumentDB + Power BI
Analyze and visualize non-relational data with DocumentDB + Power BIAnalyze and visualize non-relational data with DocumentDB + Power BI
Analyze and visualize non-relational data with DocumentDB + Power BISriram Hariharan
 
MySQL Connector/Node.js and the X DevAPI
MySQL Connector/Node.js and the X DevAPIMySQL Connector/Node.js and the X DevAPI
MySQL Connector/Node.js and the X DevAPIRui Quelhas
 
Azure DocumentDB 101
Azure DocumentDB 101Azure DocumentDB 101
Azure DocumentDB 101Ike Ellis
 
Polyglot Persistence with MongoDB and Neo4j
Polyglot Persistence with MongoDB and Neo4jPolyglot Persistence with MongoDB and Neo4j
Polyglot Persistence with MongoDB and Neo4jCorie Pollock
 
Munich March 2015 - Cassandra + Spark Overview
Munich March 2015 -  Cassandra + Spark OverviewMunich March 2015 -  Cassandra + Spark Overview
Munich March 2015 - Cassandra + Spark OverviewChristopher Batey
 
MongoDB Evenings DC: Get MEAN and Lean with Docker and Kubernetes
MongoDB Evenings DC: Get MEAN and Lean with Docker and KubernetesMongoDB Evenings DC: Get MEAN and Lean with Docker and Kubernetes
MongoDB Evenings DC: Get MEAN and Lean with Docker and KubernetesMongoDB
 
The Right (and Wrong) Use Cases for MongoDB
The Right (and Wrong) Use Cases for MongoDBThe Right (and Wrong) Use Cases for MongoDB
The Right (and Wrong) Use Cases for MongoDBMongoDB
 
Big Challenges in Data Modeling: NoSQL and Data Modeling
Big Challenges in Data Modeling: NoSQL and Data ModelingBig Challenges in Data Modeling: NoSQL and Data Modeling
Big Challenges in Data Modeling: NoSQL and Data ModelingDATAVERSITY
 
Changing the game with cloud dw
Changing the game with cloud dwChanging the game with cloud dw
Changing the game with cloud dwelephantscale
 
Azure DocumentDB for Healthcare Integration
Azure DocumentDB for Healthcare IntegrationAzure DocumentDB for Healthcare Integration
Azure DocumentDB for Healthcare IntegrationBizTalk360
 
JDV for Codemotion Rome 2017
JDV for Codemotion Rome 2017JDV for Codemotion Rome 2017
JDV for Codemotion Rome 2017Luigi Fugaro
 
Database Choices
Database ChoicesDatabase Choices
Database ChoicesLynn Langit
 
Graph Databases for SQL Server Professionals
Graph Databases for SQL Server ProfessionalsGraph Databases for SQL Server Professionals
Graph Databases for SQL Server ProfessionalsStéphane Fréchette
 

Tendances (20)

SDEC2011 NoSQL Data modelling
SDEC2011 NoSQL Data modellingSDEC2011 NoSQL Data modelling
SDEC2011 NoSQL Data modelling
 
Mongo DB: Operational Big Data Database
Mongo DB: Operational Big Data DatabaseMongo DB: Operational Big Data Database
Mongo DB: Operational Big Data Database
 
Nosql data models
Nosql data modelsNosql data models
Nosql data models
 
MongoDB Evenings DC: MongoDB - The New Default Database for Giant Ideas
MongoDB Evenings DC: MongoDB - The New Default Database for Giant IdeasMongoDB Evenings DC: MongoDB - The New Default Database for Giant Ideas
MongoDB Evenings DC: MongoDB - The New Default Database for Giant Ideas
 
MongoDB & Hadoop - Understanding Your Big Data
MongoDB & Hadoop - Understanding Your Big DataMongoDB & Hadoop - Understanding Your Big Data
MongoDB & Hadoop - Understanding Your Big Data
 
Using Neo4j from Java
Using Neo4j from JavaUsing Neo4j from Java
Using Neo4j from Java
 
Analyze and visualize non-relational data with DocumentDB + Power BI
Analyze and visualize non-relational data with DocumentDB + Power BIAnalyze and visualize non-relational data with DocumentDB + Power BI
Analyze and visualize non-relational data with DocumentDB + Power BI
 
MySQL Connector/Node.js and the X DevAPI
MySQL Connector/Node.js and the X DevAPIMySQL Connector/Node.js and the X DevAPI
MySQL Connector/Node.js and the X DevAPI
 
Azure DocumentDB 101
Azure DocumentDB 101Azure DocumentDB 101
Azure DocumentDB 101
 
Polyglot Persistence with MongoDB and Neo4j
Polyglot Persistence with MongoDB and Neo4jPolyglot Persistence with MongoDB and Neo4j
Polyglot Persistence with MongoDB and Neo4j
 
Munich March 2015 - Cassandra + Spark Overview
Munich March 2015 -  Cassandra + Spark OverviewMunich March 2015 -  Cassandra + Spark Overview
Munich March 2015 - Cassandra + Spark Overview
 
MongoDB Evenings DC: Get MEAN and Lean with Docker and Kubernetes
MongoDB Evenings DC: Get MEAN and Lean with Docker and KubernetesMongoDB Evenings DC: Get MEAN and Lean with Docker and Kubernetes
MongoDB Evenings DC: Get MEAN and Lean with Docker and Kubernetes
 
The Right (and Wrong) Use Cases for MongoDB
The Right (and Wrong) Use Cases for MongoDBThe Right (and Wrong) Use Cases for MongoDB
The Right (and Wrong) Use Cases for MongoDB
 
Big Challenges in Data Modeling: NoSQL and Data Modeling
Big Challenges in Data Modeling: NoSQL and Data ModelingBig Challenges in Data Modeling: NoSQL and Data Modeling
Big Challenges in Data Modeling: NoSQL and Data Modeling
 
Changing the game with cloud dw
Changing the game with cloud dwChanging the game with cloud dw
Changing the game with cloud dw
 
Azure DocumentDB for Healthcare Integration
Azure DocumentDB for Healthcare IntegrationAzure DocumentDB for Healthcare Integration
Azure DocumentDB for Healthcare Integration
 
NoSQL with Mongodb
NoSQL with MongodbNoSQL with Mongodb
NoSQL with Mongodb
 
JDV for Codemotion Rome 2017
JDV for Codemotion Rome 2017JDV for Codemotion Rome 2017
JDV for Codemotion Rome 2017
 
Database Choices
Database ChoicesDatabase Choices
Database Choices
 
Graph Databases for SQL Server Professionals
Graph Databases for SQL Server ProfessionalsGraph Databases for SQL Server Professionals
Graph Databases for SQL Server Professionals
 

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

Considerations for using NoSQL technology on your next IT project - Akmal Cha...
Considerations for using NoSQL technology on your next IT project - Akmal Cha...Considerations for using NoSQL technology on your next IT project - Akmal Cha...
Considerations for using NoSQL technology on your next IT project - Akmal Cha...BCS Data Management Specialist Group
 
Considerations for using NoSQL technology on your next IT project
Considerations for using NoSQL technology on your next IT projectConsiderations for using NoSQL technology on your next IT project
Considerations for using NoSQL technology on your next IT projectAkmal Chaudhri
 
Considerations for using NoSQL technology on your next IT project
Considerations for using NoSQL technology on your next IT projectConsiderations for using NoSQL technology on your next IT project
Considerations for using NoSQL technology on your next IT projectAkmal Chaudhri
 
Considerations for using NoSQL technology on your next IT project
Considerations for using NoSQL technology on your next IT projectConsiderations for using NoSQL technology on your next IT project
Considerations for using NoSQL technology on your next IT projectAkmal Chaudhri
 
Considerations for using NoSQL technology on your next IT project
Considerations for using NoSQL technology on your next IT projectConsiderations for using NoSQL technology on your next IT project
Considerations for using NoSQL technology on your next IT projectAkmal Chaudhri
 
ER/Studio and DB PowerStudio Launch Webinar: Big Data, Big Models, Big News!
ER/Studio and DB PowerStudio Launch Webinar: Big Data, Big Models, Big News! ER/Studio and DB PowerStudio Launch Webinar: Big Data, Big Models, Big News!
ER/Studio and DB PowerStudio Launch Webinar: Big Data, Big Models, Big News! Embarcadero Technologies
 
Moving from SQL Server to MongoDB
Moving from SQL Server to MongoDBMoving from SQL Server to MongoDB
Moving from SQL Server to MongoDBNick Court
 
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 CassasdraBrian Enochson
 
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 DATAVERSITY
 
MongoDB Tick Data Presentation
MongoDB Tick Data PresentationMongoDB Tick Data Presentation
MongoDB Tick Data PresentationMongoDB
 
20171104 hk-py con-mysql-documentstore_v1
20171104 hk-py con-mysql-documentstore_v120171104 hk-py con-mysql-documentstore_v1
20171104 hk-py con-mysql-documentstore_v1Ivan Ma
 
MySQL Document Store for Modern Applications
MySQL Document Store for Modern ApplicationsMySQL Document Store for Modern Applications
MySQL Document Store for Modern ApplicationsOlivier DASINI
 
Webinar: “ditch Oracle NOW”: Best Practices for Migrating to MongoDB
 Webinar: “ditch Oracle NOW”: Best Practices for Migrating to MongoDB Webinar: “ditch Oracle NOW”: Best Practices for Migrating to MongoDB
Webinar: “ditch Oracle NOW”: Best Practices for Migrating to MongoDBMongoDB
 
Polyglot Database - Linuxcon North America 2016
Polyglot Database - Linuxcon North America 2016Polyglot Database - Linuxcon North America 2016
Polyglot Database - Linuxcon North America 2016Dave Stokes
 
NoSQL Databases Introduction - UTN 2013
NoSQL Databases Introduction - UTN 2013NoSQL Databases Introduction - UTN 2013
NoSQL Databases Introduction - UTN 2013Facundo Farias
 
SQL vs NoSQL, an experiment with MongoDB
SQL vs NoSQL, an experiment with MongoDBSQL vs NoSQL, an experiment with MongoDB
SQL vs NoSQL, an experiment with MongoDBMarco Segato
 
NoSQL databases - An introduction
NoSQL databases - An introductionNoSQL databases - An introduction
NoSQL databases - An introductionPooyan Mehrparvar
 
How to Survive as a Data Architect in a Polyglot Database World
How to Survive as a Data Architect in a Polyglot Database WorldHow to Survive as a Data Architect in a Polyglot Database World
How to Survive as a Data Architect in a Polyglot Database WorldKaren Lopez
 

Similaire à Considerations for using NoSQL technology on your next IT project - Akmal Chaudhri (20)

Considerations for using NoSQL technology on your next IT project - Akmal Cha...
Considerations for using NoSQL technology on your next IT project - Akmal Cha...Considerations for using NoSQL technology on your next IT project - Akmal Cha...
Considerations for using NoSQL technology on your next IT project - Akmal Cha...
 
Considerations for using NoSQL technology on your next IT project
Considerations for using NoSQL technology on your next IT projectConsiderations for using NoSQL technology on your next IT project
Considerations for using NoSQL technology on your next IT project
 
Considerations for using NoSQL technology on your next IT project
Considerations for using NoSQL technology on your next IT projectConsiderations for using NoSQL technology on your next IT project
Considerations for using NoSQL technology on your next IT project
 
Considerations for using NoSQL technology on your next IT project
Considerations for using NoSQL technology on your next IT projectConsiderations for using NoSQL technology on your next IT project
Considerations for using NoSQL technology on your next IT project
 
Considerations for using NoSQL technology on your next IT project
Considerations for using NoSQL technology on your next IT projectConsiderations for using NoSQL technology on your next IT project
Considerations for using NoSQL technology on your next IT project
 
ER/Studio and DB PowerStudio Launch Webinar: Big Data, Big Models, Big News!
ER/Studio and DB PowerStudio Launch Webinar: Big Data, Big Models, Big News! ER/Studio and DB PowerStudio Launch Webinar: Big Data, Big Models, Big News!
ER/Studio and DB PowerStudio Launch Webinar: Big Data, Big Models, Big News!
 
No SQL and MongoDB - Hyderabad Scalability Meetup
No SQL and MongoDB - Hyderabad Scalability MeetupNo SQL and MongoDB - Hyderabad Scalability Meetup
No SQL and MongoDB - Hyderabad Scalability Meetup
 
Moving from SQL Server to MongoDB
Moving from SQL Server to MongoDBMoving from SQL Server to MongoDB
Moving from SQL Server to MongoDB
 
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
 
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
 
MongoDB Tick Data Presentation
MongoDB Tick Data PresentationMongoDB Tick Data Presentation
MongoDB Tick Data Presentation
 
20171104 hk-py con-mysql-documentstore_v1
20171104 hk-py con-mysql-documentstore_v120171104 hk-py con-mysql-documentstore_v1
20171104 hk-py con-mysql-documentstore_v1
 
MySQL Document Store for Modern Applications
MySQL Document Store for Modern ApplicationsMySQL Document Store for Modern Applications
MySQL Document Store for Modern Applications
 
Webinar: “ditch Oracle NOW”: Best Practices for Migrating to MongoDB
 Webinar: “ditch Oracle NOW”: Best Practices for Migrating to MongoDB Webinar: “ditch Oracle NOW”: Best Practices for Migrating to MongoDB
Webinar: “ditch Oracle NOW”: Best Practices for Migrating to MongoDB
 
Polyglot Database - Linuxcon North America 2016
Polyglot Database - Linuxcon North America 2016Polyglot Database - Linuxcon North America 2016
Polyglot Database - Linuxcon North America 2016
 
NoSQL Databases Introduction - UTN 2013
NoSQL Databases Introduction - UTN 2013NoSQL Databases Introduction - UTN 2013
NoSQL Databases Introduction - UTN 2013
 
SQL vs NoSQL, an experiment with MongoDB
SQL vs NoSQL, an experiment with MongoDBSQL vs NoSQL, an experiment with MongoDB
SQL vs NoSQL, an experiment with MongoDB
 
NoSQL databases - An introduction
NoSQL databases - An introductionNoSQL databases - An introduction
NoSQL databases - An introduction
 
How to Survive as a Data Architect in a Polyglot Database World
How to Survive as a Data Architect in a Polyglot Database WorldHow to Survive as a Data Architect in a Polyglot Database World
How to Survive as a Data Architect in a Polyglot Database World
 
NoSQL Introduction
NoSQL IntroductionNoSQL Introduction
NoSQL Introduction
 

Dernier

Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)Commit University
 
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDE
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDEADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDE
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDELiveplex
 
OpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureOpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureEric D. Schabell
 
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...Will Schroeder
 
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdfIaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdfDaniel Santiago Silva Capera
 
How Accurate are Carbon Emissions Projections?
How Accurate are Carbon Emissions Projections?How Accurate are Carbon Emissions Projections?
How Accurate are Carbon Emissions Projections?IES VE
 
Linked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond OntologiesLinked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond OntologiesDavid Newbury
 
Introduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptxIntroduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptxMatsuo Lab
 
COMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online CollaborationCOMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online Collaborationbruanjhuli
 
Machine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdfMachine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdfAijun Zhang
 
20230202 - Introduction to tis-py
20230202 - Introduction to tis-py20230202 - Introduction to tis-py
20230202 - Introduction to tis-pyJamie (Taka) Wang
 
Salesforce Miami User Group Event - 1st Quarter 2024
Salesforce Miami User Group Event - 1st Quarter 2024Salesforce Miami User Group Event - 1st Quarter 2024
Salesforce Miami User Group Event - 1st Quarter 2024SkyPlanner
 
Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™Adtran
 
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve DecarbonizationUsing IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve DecarbonizationIES VE
 
COMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a WebsiteCOMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a Websitedgelyza
 
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...Aggregage
 
AI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just MinutesAI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just MinutesMd Hossain Ali
 
Nanopower In Semiconductor Industry.pdf
Nanopower  In Semiconductor Industry.pdfNanopower  In Semiconductor Industry.pdf
Nanopower In Semiconductor Industry.pdfPedro Manuel
 
UiPath Studio Web workshop series - Day 7
UiPath Studio Web workshop series - Day 7UiPath Studio Web workshop series - Day 7
UiPath Studio Web workshop series - Day 7DianaGray10
 

Dernier (20)

Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)
 
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDE
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDEADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDE
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDE
 
OpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureOpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability Adventure
 
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
 
201610817 - edge part1
201610817 - edge part1201610817 - edge part1
201610817 - edge part1
 
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdfIaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
 
How Accurate are Carbon Emissions Projections?
How Accurate are Carbon Emissions Projections?How Accurate are Carbon Emissions Projections?
How Accurate are Carbon Emissions Projections?
 
Linked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond OntologiesLinked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond Ontologies
 
Introduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptxIntroduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptx
 
COMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online CollaborationCOMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online Collaboration
 
Machine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdfMachine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdf
 
20230202 - Introduction to tis-py
20230202 - Introduction to tis-py20230202 - Introduction to tis-py
20230202 - Introduction to tis-py
 
Salesforce Miami User Group Event - 1st Quarter 2024
Salesforce Miami User Group Event - 1st Quarter 2024Salesforce Miami User Group Event - 1st Quarter 2024
Salesforce Miami User Group Event - 1st Quarter 2024
 
Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™
 
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve DecarbonizationUsing IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
 
COMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a WebsiteCOMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a Website
 
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
 
AI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just MinutesAI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just Minutes
 
Nanopower In Semiconductor Industry.pdf
Nanopower  In Semiconductor Industry.pdfNanopower  In Semiconductor Industry.pdf
Nanopower In Semiconductor Industry.pdf
 
UiPath Studio Web workshop series - Day 7
UiPath Studio Web workshop series - Day 7UiPath Studio Web workshop series - Day 7
UiPath Studio Web workshop series - Day 7
 

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) • 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/
  • 13. Your road leads to NoSQL? NoSQL NoSQL NoSQL NoSQL NoSQL NoSQL NoSQL NoSQL
  • 15. Innovation adoption lifecycle Source: http://en.wikipedia.org/wiki/Technology_adoption_lifecycle
  • 19. Today
  • 20. The way developers really think OO XML NoSQL
  • 21. NoSQL is developer-friendly Other Stakeholders Developers
  • 22. 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/home/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
  • 25. Extra! extra! ... Source: Inspired by “The Next Big Thing 2012” The Wall Street Journal 27 September 2012
  • 28. Extra! extra! Source: Inspired by the movie “Airplane!” (1980)
  • 29. 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.
  • 31. 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/
  • 32. NoSQL market size Source: http://wikibon.org/wiki/v/Big_Data_Vendor_Revenue_and_Market_Forecast_2012-2017
  • 33. NoSQL job trends Source: http://regulargeek.com/2012/08/30/nosql-job-trends-august-2012/ (August 2012) Example: 100,000 x 0.08 % = 80 jobs!
  • 34. NoSQL jobs in the UK • Database and Business Intelligence – MongoDB (696) – Cassandra (291) – Redis (242) – CouchDB (122) – Hive (70) – HBase (67) – Neo4j (52) – Couchbase (38) Source: http://www.itjobswatch.co.uk/jobs/uk/nosql.do (May 2013)
  • 35. DB-Engines ranking ... Source: http://db-engines.com/en/ranking/ (November 2012)
  • 37. PaaS example ... Source: Jelastic, used with permission
  • 38. PaaS example Source: Jelastic, used with permission
  • 39. NoSQL
  • 43. 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
  • 44. NoSQL drivers Source: Couchbase NoSQL Survey (December 2011)
  • 45. Source: 451 Research, used with permission
  • 46. How many systems? Source: http://nosql-database.org/ (October 2012)
  • 47. Major categories of NoSQL ... Type Examples Document store Column store Key-value store Graph store
  • 48. Major categories of NoSQL Document store Column store Key-value store Graph store Key Document (collection of key- values) Key CF1: C1 CF1: C2 CF2: C1 CF3: C1 Key Binary Data Key Properties Node 1 Key Properties Node 2 Key Properties Relationship 1
  • 49. Source: Ilya Katsov, used with permission
  • 51. 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
  • 53. 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");
  • 54. 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);
  • 55. Read BasicDBObject document = new BasicDBObject(); document.put("name", "akmal"); DBCursor cursor = collection.find(document); while (cursor.hasNext()) System.out.println(cursor.next()); cursor.close();
  • 56. 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);
  • 57. Delete BasicDBObject document = new BasicDBObject(); document.put("name", "akmal"); collection.remove(document);
  • 59. 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'] };
  • 60. Create function (callback) { collection.insert(document, {w:1}, function(err, result) { if (err) { return callback(err); } callback(); }); },
  • 61. Read function (callback) { collection.findOne({'name':'akmal'}, function(err, item) { if (err) { return callback(err); } console.log(item); callback(); }); },
  • 62. Update function (callback) { collection.update({'name':'akmal'}, {$set:{'age':29}}, {w:1}, function(err, result) { if (err) { return callback(err); } callback(); }); },
  • 63. Delete function (callback) { collection.remove({'name':'akmal'}, function(err, result) { if (err) { return callback(err); } callback(); }); },
  • 64. Column store ... • Manage structured data, with multiple-attribute access • Columns are grouped together in “column- families/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
  • 65. 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
  • 68. 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();
  • 69. 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();
  • 70. Update String query = "UPDATE people SET age = 29 WHERE name = 'akmal'"; Statement statement = connection.createStatement(); statement.executeUpdate(query); statement.close();
  • 71. Delete String query = "BEGIN BATCHn" + "DELETE FROM people WHERE name = 'akmal'n" + "APPLY BATCH;"; Statement statement = connection.createStatement(); statement.executeUpdate(query); statement.close();
  • 72. 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
  • 74. Connection Jedis j = new Jedis("localhost", 6379); j.connect(); System.out.println("Connected to Redis");
  • 75. 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);
  • 76. 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"));
  • 77. Update String id = j.hget("uid:lookup:name", "akmal"); j.set("uid:" + id + ":age", "29");
  • 78. 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");
  • 79. 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
  • 82. 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");
  • 83. 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(); }
  • 84. 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(); }
  • 85. Update Transaction tx = graphDb.beginTx(); try { firstNode.setProperty("age", 29); tx.success(); } finally { tx.finish(); }
  • 86. Delete Transaction tx = graphDb.beginTx(); try { firstNode.getSingleRelationship(RelTypes.LIKES, Direction.OUTGOING).delete(); firstNode.delete(); secondNode.delete(); tx.success(); } finally { tx.finish(); }
  • 87. 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
  • 88. 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
  • 89. 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
  • 90. 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
  • 91. 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-per- use in cloud – Reduced need for database administration, and maintenance
  • 94. NoSQL injection attacks ... • NoSQL systems are vulnerable • Various types of attacks • Understand the vulnerabilities and consequences
  • 96. 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
  • 97. 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
  • 98. Polyglot persistence • NoSQL product specialization requires developer knowledge and skills for each platform • Different APIs – Develop public API for each NoSQL store (Disney)
  • 99. 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 loose- cannon 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)
  • 101. 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
  • 102. Yahoo Cloud Serving BM • Yahoo Cloud Serving Benchmark (YCSB) – Research paper – Slide deck • Altoros Report – 50+ pages • Thumbtack Report – 40+ pages
  • 103. Linked Data Benchmark Council • EU-funded project • Develop Graph and RDF benchmarks
  • 105. 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
  • 108. Source: 451 Research, used with permission
  • 113. 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)
  • 114. 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?
  • 116. Traditional RDBMS Simple Slow Small Fast Complex Large ApplicationComplexity Value of Individual Data Item Aggregate Data Value DataValue Velocity InteractiveInteractive RealReal--timetime AnalyticsAnalytics Record LookupRecord Lookup HistoricalHistorical AnalyticsAnalytics ExploratoryExploratory AnalyticsAnalytics TransactionalTransactional AnalyticAnalytic Source: VoltDB, used with permission
  • 117. Understand your use case Source: http://www.techvalidate.com/tvid/F66-11B-178/
  • 118. 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)
  • 120. 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/105126255575427189 842/ – http://www.slideshare.net/VeryFatBoy/ – http://www.youtube.com/VeryFatBoyVideos/
  • 125. History • First NoSQL meetup – http://nosql.eventbrite.com/ – http://blog.oskarsson.nu/post/22996139456/nosql- meetup • First NoSQL meetup debrief – http://blog.oskarsson.nu/post/22996140866/nosql- debrief • First NoSQL meetup photographs – http://www.flickr.com/photos/russss/sets/7215761971 1038897/
  • 126. NoSQL Search roadshow • Multi-city tour 2013 – Munich – Berlin – San Francisco – Copenhagen – Zurich – Amsterdam – London Source: http://nosqlroadshow.com/
  • 127. Web sites • NoSQL Databases and Polyglot Persistence: A Curated Guide – http://nosql.mypopescu.com/ • NoSQL: Your Ultimate Guide to the Non- Relational Universe! – http://nosql-database.org/
  • 128. 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/
  • 129. Free books • CouchDB: The Definitive Guide – http://guide.couchdb.org/ • A Little Riak Book – https://github.com/coderoshi/little_riak_book/
  • 130. Free training • Free courses on MongoDB – https://education.10gen.com/
  • 131. Articles • Saying Yes to NoSQL – http://www.nofluffjuststuff.com/s/magazine/NFJS_the Magazine_Vol3_Issue3_May2011.pdf • The State of NoSQL – http://www.infoq.com/articles/State-of-NoSQL/
  • 132. White papers • The CIO’s Guide to NoSQL – http://documents.datav ersity.net/whitepapers/ the-cios-guide-to- nosql.html
  • 133. Product selection ... • 101 Questions to Ask When Considering a NoSQL Database – http://highscalability.com/blog/2011/6/15/101- questions-to-ask-when-considering-a-nosql- database.html • 35+ Use Cases for Choosing Your Next NoSQL Database – http://highscalability.com/blog/2011/6/20/35-use- cases-for-choosing-your-next-nosql-database.html
  • 134. Product selection • NoSQL Options Compared: Different Horses for Different Courses – http://www.slideshare.net/tazija/nosql-options- compared/ • 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-store- according-to-your-data-set/
  • 135. Short product overviews ... • Picking the Right NoSQL Database Tool – http://blog.monitis.com/index.php/2011/05/22/picking- the-right-nosql-database-tool/ • NoSQL Databases -- A Look at Apache Cassandra – http://blog.monitis.com/index.php/2011/05/24/nosql- databases-a-look-at-apache-cassandra/ • The NoSQL Databases -- A Look at HBase – http://blog.monitis.com/index.php/2011/05/31/the- nosql-databases-a-look-at-hbase/
  • 136. Short product overviews ... • A Look at Some NoSQL Databases -- MongoDB, Redis and Basho Riak – http://blog.monitis.com/index.php/2011/06/06/a-look- at-some-nosql-databases-mongodb-redis-and-basho- riak/ • Picking the Right NoSQL Database, Part 4 -- CouchDB and Membase – http://blog.monitis.com/index.php/2011/06/17/picking- the-right-nosql-database-part-4-couchdb-and- membase/
  • 137. 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-vs- couchdb-vs-redis/ • vsChart.com – http://vschart.com/list/database/
  • 138. Case studies ... • Real World NoSQL: HBase at Trend Micro – http://gigaom.com/cloud/real-world-nosql-hbase-at- trend-micro/ • Real World NoSQL: MongoDB at Shutterfly – http://gigaom.com/cloud/real-world-nosql-mongodb- at-shutterfly/ • Real World NoSQL: Cassandra at Openwave – http://gigaom.com/cloud/realworld-nosql-cassandra- at-openwave/
  • 139. Case studies • Real World NoSQL: Amazon SimpleDB at Netflix – http://gigaom.com/cloud/real-world-nosql-amazon- simpledb-at-netflix/ • Real World NoSQL: Membase at Tribal Crossing – http://gigaom.com/cloud/real-world-nosql-membase- at-tribal-crossing/ • How Disney built a big data platform on a startup budget – http://gigaom.com/data/how-disney-built-a-big-data- platform-on-a-startup-budget/
  • 140. Security ... • NoSQL, no security? – http://www.slideshare.net/wurbanski/nosql-no- security/ • NoSQL, No Injection!? – http://www.slideshare.net/wayne_armorize/nosql-no- sql-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/NoSQL- But-Even-Less-Security.pdf
  • 141. Security • NoSQL Database Security – http://conference.auscert.org.au/conf2011/presentatio ns/Louis Nyffenegger V1.pdf • Does NoSQL Mean No Security? – http://www.darkreading.com/database- security/167901020/security/news/232400214/does- nosql-mean-no-security.html • A Response To NoSQL Security Concerns – http://www.darkreading.com/blog/232600288/a- response-to-nosql-security-concerns.html
  • 142. Polyglot persistence ... • Polyglot Persistence – http://www.slideshare.net/jwoodslideshare/polyglot- persistence-two-great-tastes-that-taste-great- together-4625004/ • HBase at Mendeley – http://www.slideshare.net/danharvey/hbase-at- mendeley/ • Polyglot Persistence Patterns – http://abhishek-tiwari.com/post/polyglot-persistence- patterns/
  • 143. 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
  • 144. Performance benchmarks ... • Yahoo Cloud Serving Benchmark – http://research.yahoo.com/node/3202/ – http://altoros.com/nosql-research – http://www.slideshare.net/tazija/evaluating-nosql- performance-time-for-benchmarking/ • Benchmarking Couchbase Server – http://www.slideshare.net/Couchbase/t1-s4- couchbase-performancebenchmarkingv34/
  • 145. Performance benchmarks ... • Ultra-High Performance NoSQL Benchmarking – http://thumbtack.net/solutions/ThumbtackWhitePaper. html • Benchmarking Top NoSQL Databases – http://www.datastax.com/resources/whitepapers/benc hmarking-top-nosql-databases
  • 146. Performance benchmarks ... • MongoDB Performance Pitfalls -- Behind The Scenes – http://blog.trackerbird.com/content/mongodb- performance-pitfalls-behind-the-scenes/ • MySQL vs. MongoDB Disk Space Usage – http://blog.trackerbird.com/content/mysql-vs- mongodb-disk-space-usage/ • MongoDB: Scaling write performance – http://www.slideshare.net/daumdna/mongodb-scaling- write-performance/
  • 147. Performance benchmarks • Can the Elephants Handle the NoSQL Onslaught? – http://vldb.org/pvldb/vol5/p1712_avriliafloratou_vldb20 12.pdf • Solving Big Data Challenges for Enterprise Application Performance Management – http://vldb.org/pvldb/vol5/p1724_tilmannrabl_vldb201 2.pdf • Linked Data Benchmark Council – http://ldbc.eu/
  • 148. BI/Analytics • BI/Analytics on NoSQL: Review of Architectures Part 1 – http://www.dataversity.net/bianalytics-on-nosql- review-of-architectures-part-1/ • BI/Analytics on NoSQL: Review of Architectures Part 2 – http://www.dataversity.net/bianalytics-on-nosql- review-of-architectures-part-2/
  • 149. Various graphics ... • Database Landscape Map -- December 2012 – http://blogs.the451group.com/information_manageme nt/2012/12/20/database-landscape-map-december- 2012/ • Necessity is the mother of NoSQL – http://blogs.the451group.com/information_manageme nt/2011/04/20/necessity-is-the-mother-of-nosql/ • NoSQL, Heroku, and You – https://blog.heroku.com/archives/2010/7/20/nosql/
  • 150. Various graphics • The NoSQL vs. SQL hoopla, another turn of the screw! – http://www.parelastic.com/blog/nosql-vs-sql-hoopla- another-turn-screw/ • Navigating the Database Universe – http://www.slideshare.net/lisapaglia/navigating-the- database-universe/
  • 151. Discussion fora • NoSQL – http://www.linkedin.com/groups?gid=2085042 • NewSQL – http://www.linkedin.com/groups/NewSQL-4135938 • Google groups – http://groups.google.com/group/nosql-discussion
  • 152. London meetup groups ... • Cassandra – http://www.meetup.com/Cassandra-London/ • MongoDB – http://www.meetup.com/London-MongoDB-User- Group/ • Neo4j – http://www.meetup.com/graphdb-london/ • Redis – http://www.meetup.com/Redis-London/
  • 153. London meetup groups • Riak – http://www.meetup.com/riak-london/
  • 154. NoSQL jokes/humour ... • LinkedIn discussion thread – http://www.linkedin.com/groups/NoSQL-Jokes- Humour-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
  • 155. NoSQL jokes/humour • C.R.U.D. – http://crudcomic.com/ – Scroll-back for some great humour on NoSQL!
  • 156. Miscellaneous ... • Powerpoint template – http://www.articulate.com/rapid-elearning/heres-a- free-powerpoint-template-how-i-made-it/ • Autostereogram – http://www.all-freeware.com/images/full/46590- free_stereogram_screensaver_audio___multimedia_ other.jpeg • Theatre Curtain Animations – http://www.slideshare.net/chinateacher1/theater- curtain-animations/
  • 157. Miscellaneous ... • Bar and Column charts – http://www.diychart.com/ • Newspaper headlines – http://www.imagechef.com/ic/make.jsp?tid=Newspape r+Headline • Pie charts – http://www.onlinecharttool.com/
  • 158. Miscellaneous • Icons and images – http://www.geekpedia.com/icons.php – http://cemagraphics.deviantart.com/ – http://www.freestockphotos.biz/ – http://www.graphicsfuel.com/2011/09/comments- speech-bubble-icon-psd/ – http://icondock.com/