100% found this document useful (2 votes)
234 views

Alternative Databases: Scott Macvicar Dutch PHP Conference 2009

This document discusses alternative databases to traditional relational databases. It provides an overview of NoSQL databases like MemcacheDB, Tokyo Cabinet, CouchDB, Amazon SimpleDB and how they address limitations of scaling and complex queries in relational databases. Examples are given of using these databases for applications like blogs to demonstrate their document structures, querying and replication capabilities.

Uploaded by

kaplumb_aga
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
100% found this document useful (2 votes)
234 views

Alternative Databases: Scott Macvicar Dutch PHP Conference 2009

This document discusses alternative databases to traditional relational databases. It provides an overview of NoSQL databases like MemcacheDB, Tokyo Cabinet, CouchDB, Amazon SimpleDB and how they address limitations of scaling and complex queries in relational databases. Examples are given of using these databases for applications like blogs to demonstrate their document structures, querying and replication capabilities.

Uploaded by

kaplumb_aga
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 52

Alternative Databases

Scott MacVicar
Dutch PHP Conference 2009

Saturday, 13 June 2009


Who are you?

Saturday, 13 June 2009


History Lesson

Saturday, 13 June 2009


First Data
Storage

Saturday, 13 June 2009


Relational
Databases FTW!

Relational Database is Born


Saturday, 13 June 2009
Parts of a RDBMS?
Maths SQL

Relation Table

Derived
Result Set
Relation

Tuple Row

Attribute Column

Domain Type
Saturday, 13 June 2009
SQL Purpose

Retrieval
Manipulation
Transactions

Saturday, 13 June 2009


SQL Fails

Complex Specification
Join Fails
Where clause

Saturday, 13 June 2009


RDBMS through the Ages

Saturday, 13 June 2009


RDBMs suck

Adding fields is hard


Complex
Copying / Backup database
Performance

Saturday, 13 June 2009


Scaling?
Master Master Master
Database Database Database

App App App

Saturday, 13 June 2009


Scaling?
Slave Master Slave
Database Database Database

App App App

Saturday, 13 June 2009


“Write consistency is the reason RDBMS are
imploding under their own weight.”

Saturday, 13 June 2009


Why do we use a RDBMs?

Saturday, 13 June 2009


RDBMS Hangups

Saturday, 13 June 2009


SQL
blog comments
blog_id comment_id
title blog_id
publish_time author
author content
content

Saturday, 13 June 2009


Save See

Secure Share

Saturday, 13 June 2009


Memcache + BerkleyDB =
MemcacheDB?

Saturday, 13 June 2009


MemcacheDB

Memcache isn’t persistent :(


Memcache dependency
Memcache does what it does well

Saturday, 13 June 2009


MemcacheDB

Simple Protocol
Tried and tested DB
Transactions
Replication

Saturday, 13 June 2009


Using MemcacheDB

Saturday, 13 June 2009


MemcacheDB + PHP

Saturday, 13 June 2009


Blog Example

Saturday, 13 June 2009


Tokyo Cabinet

Collection of types
Created for mixi.jp (Facebook of Japan)
Common API
New in PHP6, maybe PHP 5.3.1

Saturday, 13 June 2009


Tokyo Hash Database

Constant time for most operations


Second Hash for collisions
Key values stored in a bucket array

Saturday, 13 June 2009


Buckets!

Key Value
Key Value
Key Value
Key Value
Key Value
Key Value

Saturday, 13 June 2009


Tokyo Cabinet Hash

Saturday, 13 June 2009


B+ Tree

Ordered Access
Multiple Keys
Cursor

Saturday, 13 June 2009


Fixed-Length

Access by numeric key


No keys stored
Fast

Saturday, 13 June 2009


Fixed-Length
0
value value value value value value value
8
value value value value value value value
16
value value value value value value value
24
value value value value value value value
32
value value value value value value value
40

Saturday, 13 June 2009


Table Database

Schema-less
Named Attributes
Indexes
Queries

Saturday, 13 June 2009


Table Database

Primary Key name value name value name value

Primary Key name value name value name value

Primary Key name value name value name value

Saturday, 13 June 2009


Tokyo Tyrant

Network wrapper
Speaks Memcache / HTTP
Extension in works by Mikko

Saturday, 13 June 2009


Tokyo Tyrant

High Availability
Asynchronous Updates
Lua scripting

Saturday, 13 June 2009


CouchDB

REST
JavaScript
Erlang

Saturday, 13 June 2009


CouchDB

Document Database
Replication
Map Reduce
No Indexes

Saturday, 13 June 2009


Database Access

GET /_all_dbs
PUT /somedatabase/
DELETE /somedatabase/
GET /somedatabase/

Saturday, 13 June 2009


Document Access

GET /somedatabase/_all_docs
PUT /somedatabase/some_docid
POST /somedatabase/
DELETE /somedatabase/some_docid
GET /somedatabase/some_docid

Saturday, 13 June 2009


CouchDB Document

Saturday, 13 June 2009


CouchDB Document

Saturday, 13 June 2009


CouchDB Views

Saturday, 13 June 2009


CouchDB Scaling

Caching
Clustering
Layering

Saturday, 13 June 2009


CouchDB Wrappers

PHPillow - http://short.ie/buiqhu
Phly_Couch - http://short.ie/pa47gp

Saturday, 13 June 2009


CouchDB Blog

Saturday, 13 June 2009


CouchDB Blog Alternative

Saturday, 13 June 2009


Amazon SimpleDB

XML Rest

Application

Saturday, 13 June 2009


Amazon SimpleDB

Amazon Web Service


Cloudy
Rest / XML

Saturday, 13 June 2009


SimpleDB

1 billion attributes
5 seconds execution
1024 byte values

Saturday, 13 June 2009


SimpleDB Set

Saturday, 13 June 2009


SimpleDB Query

Saturday, 13 June 2009


SimpleDB API

Officially Amazon API - http://short.ie/apx6c3


Tarzan-AWS - http://short.ie/54rucx

Saturday, 13 June 2009


Questions?

http://talks.macvicar.net
http://couchdb.apache.org
http://aws.amazon.com
http://memcachedb.org

Saturday, 13 June 2009

You might also like