remodel your persistence layer

20
remodel your persistence layer

Upload: tim-lossen

Post on 06-May-2015

1.990 views

Category:

Technology


0 download

DESCRIPTION

presented at ruby user group berlin on 2010-04-01

TRANSCRIPT

Page 1: remodel your persistence layer

remodel your persistence layer

Page 2: remodel your persistence layer

ORM

Page 3: remodel your persistence layer

object redis mapper

Page 4: remodel your persistence layer

“People that are wrapping ORM’s around redis are missing the point.”

— Nate Wiger

Page 5: remodel your persistence layer

OMG

Page 6: remodel your persistence layer

why replace mysql with remodel + redis ?

Page 7: remodel your persistence layer

“Memory is the new Disk. Disk is the new Tape.”

— Jim Gray

Page 8: remodel your persistence layer

speed!

flickr.com/photos/atzu/2645776918

Page 9: remodel your persistence layer

mysql

• read scaling

• vertical: more memory

• horizontal: master-slave replication

• write scaling

• vertical: more / faster disks (raid, ssd ...)

• horizontal: sharding

Page 10: remodel your persistence layer

“You are not Facebook.” — me

Page 11: remodel your persistence layer

redis

• ~ 100K ops / second (read or write)

• read scaling?

• probably not necessary

• write scaling

• probably not necessary

• (but sharding is possible)

Page 12: remodel your persistence layer

remodel

• “minimal” object mapper

• mapping strategy:

• unique key prefix per entity class

• serialize properties to json

• store associations as separate keys

• less than 300 lines of ruby

Page 13: remodel your persistence layer

features

• supports all basic ruby / json types

• plus custom mappers (date, time ...)

• associations

• one-to-many / many-to-one

• one-to-one, many-to-many

Page 14: remodel your persistence layer
Page 16: remodel your persistence layer

limitations

• only very basic validations

• use ActiveModel::Validations

• no complex finders

• not supported by redis

• maybe somebody wants to build redis-lucene ?

Page 17: remodel your persistence layer

roadmap

• current status — alpha (0.1.0)

• next month:

• “eat your own dogfood”

• bugfixing

• documentation

• beta release

Page 18: remodel your persistence layer

ideas

• find_by(with ohm-like indexes)

• optimistic locking

• re-implement in node.js

• .... what else ?

Page 19: remodel your persistence layer

??

Page 20: remodel your persistence layer

github.com/tlossen /remodel

fork me: