Cloudant & Redis
Nikolay Tomitov
Technical Trainer
SoftAcad Training Center
www.softacad.bg
Documental Databases
Relational Databases
www.softacad.bg
www.softacad.bg
Cloudant == managed installation of Apache CouchDB in the cloud
www.softacad.bg

Cloudant scales within & between data centers
◦ Global networks of servers
◦ Built-in replication and sync
◦ Push the data closer to the user & application
◦ Disaster recovery
www.softacad.bg

Eliminates data layer-related complexity,
delay, cost, and risk

Performance & scale with no worries

Build epic apps, easily
◦ Enables advanced app features and analytics
◦ Full-text search, off-line computing, replication,
incremental MapReduce, code and data
◦ distribution...
◦ Accelerates release cycles (reduces time to value)

Start for free, pay as you grow
www.softacad.bg

Provision Signup is free, and access is
immediate

Define No schema, usually just JSON

Access RESTful API

View Define data views via Javascript

Search Integrated, Lucene-like full-text search

Analyze Incremental, chainable MapReduce


Operate Dashboards to monitor, compact,
replicate
Grow Automatic
www.softacad.bg

Data is stored and returned in JSON
format

Queried via HTTP RESTful API

Index building language: Javascript

Simple and intuitive interface
www.softacad.bg
•
Create:
HTTP PUT /db/test
•
Read:
HTTP GET /db/test
•
Update:
HTTP PUT /db/test
•
Delete:
HTTP DELETE /db/test
www.softacad.bg


Views: the way to arrange data to answer
our questions
Method to build views:
Incremental MapReduce using JavaScript
www.softacad.bg
www.softacad.bg
www.softacad.bg
www.softacad.bg
www.softacad.bg
www.softacad.bg
www.softacad.bg
www.softacad.bg



Practice Map Reduce at:
http://blog.mudynamics.com/wpcontent/uploads/2009/04/icouch.html
http://couchdb.apache.org/downloads.html
www.softacad.bg
“Redis is an open source,
advanced key-value store
It is often referred to as a data
structure server

Since keys can contain strings,
hashes, lists, sets and sorted sets
www.softacad.bg

It’s really fast
◦ Non-blocking I/O, single threaded
◦ 100,000+ read/writes a second

It complements your
existing storage layer

It is very feasible for small apps

But..trade performance for durability
www.softacad.bg
www.softacad.bg

Short keys perform better

Could not contain whitespaces

Common convention is : objtype:id:field
◦ user:77:pass = abcd

SHA1(data) makes a useful key too
www.softacad.bg

strings (up to 1GB)

Lists of strings

Sets of strings

Sorted sets

Hashes

Pubsub channels
www.softacad.bg

EXISTS[key]

DEL[key]

TYPE[key]

RENAMENX[key]

EXPIRE [key]

EXPIREAT[key]

TTL[key]
www.softacad.bg

SET[key value]

MGET[key1 key2 key3..]

GET [key]

INCR/DECR [key]

INCRBY/DECRBY[key]
www.softacad.bg

Store session data + creation time

Hit counts
◦ key =MD5(url)
◦ Incr hits-by-key:$key

APPEND can be used for logging

Redis as shared memory location

Progress bars, polling
www.softacad.bg


More durability -> less performance
Default behaviour fork-and-save a
snapshot to disk every…
◦ 15 mins if one key has changed
◦ 5 mins if 10 keys have changed
◦ 60 secs if 10000 keys have changed

SAVE/BGSAVE commands trigger a
save
www.softacad.bg
www.softacad.bg

Try it :
◦ http://try.redis-db.com

Redis Admin UI
◦ http://www.servicestack.net/mythz_blog/?p=381
www.softacad.bg



Non–relational data store
Designed to be highly available and
flexible
Available only on Amazon WS
www.softacad.bg







Low touch – almost no administration
needed
Highly available – automatic replication and
fail over
Flexible – not bound by a schema
Simple to use – supports only the most
common operations
Designed for integration with other Amazon
Web Services
Secure
RESTful interface
www.softacad.bg




Free tier – 1 GB/month, 25 SimpleDB
machine hours
Only outgoing transfers are charged
Data transfers in the same region are
free
Monthly rates between $0.12 and
$0.05
www.softacad.bg

Optimized reads and writes

Easily integrated with other AWS


Uses the HTTP protocol for
communication
Ideal for storing non – structured or
semi – structured data
www.softacad.bg

Limited functionality compared to
relational and other non – relational
products

Complex queries need a lot of coding

No fulltext indexing

All queries have the N + 1 problem
www.softacad.bg
Amazon Simple DB

Schemaless object datastore

Designed to scale

Hierarchical

Available only on Google App Engine
www.softacad.bg








No administration needed
Flexible – not bound by a schema
Designed for no downtime
Automatic replication
Queries must run against predefined
indexes
Rich query engine
Atomic transactions
APIs available for all the languages
supported by GAE
www.softacad.bg


Free quota: 1GB, 200 indexes
Monthly rates: $0.24/gigabyte;
between $0.01 and $0.10 for 100k
database operations
www.softacad.bg

Fast

Hierarchical queries boost speed

Atomic transactions supported

Large and active community

The Java API include implementations
of JDO and JPA
www.softacad.bg

Limited functionality
◦ Compared to relational databases and
other non–relational data stores

Indexes require additional
configuration
www.softacad.bg
Google App Engine Datastore
Non – relational, schema free database
 Highly scalable
 Engineered for maximum speed
 Available as a stand alone product
 A number of hosted MongoDB
solutions available

◦ MongoLab
◦ MongoHQ
◦ Mongo Machine
www.softacad.bg



Almost administration free
High availability – replication and sharding
A rich set of features
◦
◦
◦
◦
◦
◦

Complex queries
Aggregate functions
Map/Reduce operations
Indexes
Stored procedures
BLOB storage (GridFS)
Database drivers available for a large list of
programming languages
www.softacad.bg





Easy setup (No
billing info needed)
Intuitive interface
240MB free
Deploy on Amazon
EC2, Rackspace or
Joynet
MongoDB Version
1.8
MongoLab





Easy setup (Credit
card needed)
Intuitive interface
16MB free
Deploy only on
Amazon EC2
Different MongoDB
Version according
to price plan
MongoHQ

Fast

Rich feature set

Mature product

Large and active community
www.softacad.bg


No relational database style
transactions
No data validation
www.softacad.bg
MongoDB on MongoLab
1.
2.
Register for a free Cloudant account at
https://cloudant.com.
Write a simple "Dictionary" application in Java,
C#, PHP, or JavaScript to perform the following
in Cloudant:
◦ Add a dictionary entry (word + translation)
◦ List all words and their translations
◦ Find the translation of given word
The UI of the application is up to you (it could be
Web-based, GUI or console-based).
You may download a Cloudant client library from
http://wiki.apache.org/couchdb/Related_Projects
www.softacad.bg
Implement the previous task ("Dictionary") with
Redis
3.
4.
5.
◦
Register for a free "Redis To Go" account at:
https://redistogo.com
◦
Download the client libraries for your favorite programming
language from http://redis.io/clients
Implement the previous task ("Dictionary") with
MongoDB (register at MongoLab or MongoHQ)
Optionally (if you want) implement the previous
task ("Dictionary") with Google Datastore or
Amazon SimpleDB
www.softacad.bg
Descargar

Schema-free Databases