alternative databases

52
Alternative Databases Scott MacVicar Dutch PHP Conference 2009 Saturday, 13 June 2009

Upload: scott-macvicar

Post on 18-May-2015

780 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Alternative Databases

Alternative DatabasesScott MacVicar

Dutch PHP Conference 2009

Saturday, 13 June 2009

Page 2: Alternative Databases

Who are you?

Saturday, 13 June 2009

Page 3: Alternative Databases

History Lesson

Saturday, 13 June 2009

Page 5: Alternative Databases

Relational Database is Born

Relational Databases FTW!

Saturday, 13 June 2009

Page 6: Alternative Databases

Parts of a RDBMS?

Maths SQL

Relation Table

Derived Relation

Result Set

Tuple Row

Attribute Column

Domain TypeSaturday, 13 June 2009

Page 7: Alternative Databases

SQL Purpose

Retrieval

Manipulation

Transactions

Saturday, 13 June 2009

Page 8: Alternative Databases

SQL Fails

Complex Specification

Join Fails

Where clause

Saturday, 13 June 2009

Page 9: Alternative Databases

RDBMS through the Ages

Saturday, 13 June 2009

Page 10: Alternative Databases

RDBMs suck

Adding fields is hard

Complex

Copying / Backup database

Performance

Saturday, 13 June 2009

Page 11: Alternative Databases

Scaling?

MasterDatabase

MasterDatabase

MasterDatabase

App App App

Saturday, 13 June 2009

Page 12: Alternative Databases

Scaling?

SlaveDatabase

MasterDatabase

SlaveDatabase

App App App

Saturday, 13 June 2009

Page 13: Alternative Databases

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

Saturday, 13 June 2009

Page 14: Alternative Databases

Why do we use a RDBMs?

Saturday, 13 June 2009

Page 15: Alternative Databases

RDBMS Hangups

Saturday, 13 June 2009

Page 16: Alternative Databases

SQL

blogblog_idtitlepublish_timeauthorcontent

comments

comment_id

blog_id

author

content

Saturday, 13 June 2009

Page 17: Alternative Databases

Save See

Secure Share

Saturday, 13 June 2009

Page 18: Alternative Databases

Memcache + BerkleyDB = MemcacheDB?

Saturday, 13 June 2009

Page 19: Alternative Databases

MemcacheDB

Memcache isn’t persistent :(

Memcache dependency

Memcache does what it does well

Saturday, 13 June 2009

Page 20: Alternative Databases

MemcacheDB

Simple Protocol

Tried and tested DB

Transactions

Replication

Saturday, 13 June 2009

Page 24: Alternative Databases

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

Page 25: Alternative Databases

Tokyo Hash Database

Constant time for most operations

Second Hash for collisions

Key values stored in a bucket array

Saturday, 13 June 2009

Page 26: Alternative Databases

Buckets!

Key ValueKey ValueKey ValueKey ValueKey ValueKey Value

Saturday, 13 June 2009

Page 28: Alternative Databases

B+ Tree

Ordered Access

Multiple Keys

Cursor

Saturday, 13 June 2009

Page 29: Alternative Databases

Fixed-Length

Access by numeric key

No keys stored

Fast

Saturday, 13 June 2009

Page 30: Alternative Databases

Fixed-Length

value value value value value value value

value value value value value value value

value value value value value value value

value value value value value value value

value value value value value value value

0

8

16

24

32

40

Saturday, 13 June 2009

Page 31: Alternative Databases

Table Database

Schema-less

Named Attributes

Indexes

Queries

Saturday, 13 June 2009

Page 32: Alternative Databases

Table Database

Primary Key

Primary Key

Primary Key

name value

name value

name value

name value

name value

name value

name value

name value

name value

Saturday, 13 June 2009

Page 33: Alternative Databases

Network wrapper

Speaks Memcache / HTTP

Extension in works by Mikko

Tokyo Tyrant

Saturday, 13 June 2009

Page 34: Alternative Databases

Tokyo Tyrant

High Availability

Asynchronous Updates

Lua scripting

Saturday, 13 June 2009

Page 35: Alternative Databases

CouchDB

REST

JavaScript

Erlang

Saturday, 13 June 2009

Page 36: Alternative Databases

CouchDB

Document Database

Replication

Map Reduce

No Indexes

Saturday, 13 June 2009

Page 37: Alternative Databases

Database Access

GET /_all_dbs

PUT /somedatabase/

DELETE /somedatabase/

GET /somedatabase/

Saturday, 13 June 2009

Page 38: Alternative Databases

Document Access

GET /somedatabase/_all_docs

PUT /somedatabase/some_docid

POST /somedatabase/

DELETE /somedatabase/some_docid

GET /somedatabase/some_docid

Saturday, 13 June 2009

Page 42: Alternative Databases

CouchDB Scaling

Caching

Clustering

Layering

Saturday, 13 June 2009

Page 43: Alternative Databases

CouchDB Wrappers

PHPillow - http://short.ie/buiqhu

Phly_Couch - http://short.ie/pa47gp

Saturday, 13 June 2009

Page 46: Alternative Databases

Amazon SimpleDB

Application

RestXML

Saturday, 13 June 2009

Page 47: Alternative Databases

Amazon SimpleDB

Amazon Web Service

Cloudy

Rest / XML

Saturday, 13 June 2009

Page 48: Alternative Databases

SimpleDB

1 billion attributes

5 seconds execution

1024 byte values

Saturday, 13 June 2009

Page 51: Alternative Databases

SimpleDB API

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

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

Saturday, 13 June 2009

Page 52: Alternative Databases

Questions?

http://talks.macvicar.net

http://couchdb.apache.org

http://aws.amazon.com

http://memcachedb.org

Saturday, 13 June 2009