remodel your persistence layer
-
Upload
tim-lossen -
Category
Technology
-
view
1.989 -
download
0
description
Transcript of remodel your persistence layer
![Page 1: remodel your persistence layer](https://reader033.fdocuments.in/reader033/viewer/2022052504/55492ee3b4c905b44c8c1c9a/html5/thumbnails/1.jpg)
remodel your persistence layer
![Page 2: remodel your persistence layer](https://reader033.fdocuments.in/reader033/viewer/2022052504/55492ee3b4c905b44c8c1c9a/html5/thumbnails/2.jpg)
ORM
![Page 3: remodel your persistence layer](https://reader033.fdocuments.in/reader033/viewer/2022052504/55492ee3b4c905b44c8c1c9a/html5/thumbnails/3.jpg)
object redis mapper
![Page 4: remodel your persistence layer](https://reader033.fdocuments.in/reader033/viewer/2022052504/55492ee3b4c905b44c8c1c9a/html5/thumbnails/4.jpg)
“People that are wrapping ORM’s around redis are missing the point.”
— Nate Wiger
![Page 5: remodel your persistence layer](https://reader033.fdocuments.in/reader033/viewer/2022052504/55492ee3b4c905b44c8c1c9a/html5/thumbnails/5.jpg)
OMG
![Page 6: remodel your persistence layer](https://reader033.fdocuments.in/reader033/viewer/2022052504/55492ee3b4c905b44c8c1c9a/html5/thumbnails/6.jpg)
why replace mysql with remodel + redis ?
![Page 7: remodel your persistence layer](https://reader033.fdocuments.in/reader033/viewer/2022052504/55492ee3b4c905b44c8c1c9a/html5/thumbnails/7.jpg)
“Memory is the new Disk. Disk is the new Tape.”
— Jim Gray
![Page 8: remodel your persistence layer](https://reader033.fdocuments.in/reader033/viewer/2022052504/55492ee3b4c905b44c8c1c9a/html5/thumbnails/8.jpg)
speed!
flickr.com/photos/atzu/2645776918
![Page 9: remodel your persistence layer](https://reader033.fdocuments.in/reader033/viewer/2022052504/55492ee3b4c905b44c8c1c9a/html5/thumbnails/9.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022052504/55492ee3b4c905b44c8c1c9a/html5/thumbnails/10.jpg)
“You are not Facebook.” — me
![Page 11: remodel your persistence layer](https://reader033.fdocuments.in/reader033/viewer/2022052504/55492ee3b4c905b44c8c1c9a/html5/thumbnails/11.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022052504/55492ee3b4c905b44c8c1c9a/html5/thumbnails/12.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022052504/55492ee3b4c905b44c8c1c9a/html5/thumbnails/13.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022052504/55492ee3b4c905b44c8c1c9a/html5/thumbnails/14.jpg)
![Page 15: remodel your persistence layer](https://reader033.fdocuments.in/reader033/viewer/2022052504/55492ee3b4c905b44c8c1c9a/html5/thumbnails/15.jpg)
flickr.com/photos/78918694@N00/3519713609
demo time!
![Page 16: remodel your persistence layer](https://reader033.fdocuments.in/reader033/viewer/2022052504/55492ee3b4c905b44c8c1c9a/html5/thumbnails/16.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022052504/55492ee3b4c905b44c8c1c9a/html5/thumbnails/17.jpg)
roadmap
• current status — alpha (0.1.0)
• next month:
• “eat your own dogfood”
• bugfixing
• documentation
• beta release
![Page 18: remodel your persistence layer](https://reader033.fdocuments.in/reader033/viewer/2022052504/55492ee3b4c905b44c8c1c9a/html5/thumbnails/18.jpg)
ideas
• find_by(with ohm-like indexes)
• optimistic locking
• re-implement in node.js
• .... what else ?
![Page 19: remodel your persistence layer](https://reader033.fdocuments.in/reader033/viewer/2022052504/55492ee3b4c905b44c8c1c9a/html5/thumbnails/19.jpg)
??
![Page 20: remodel your persistence layer](https://reader033.fdocuments.in/reader033/viewer/2022052504/55492ee3b4c905b44c8c1c9a/html5/thumbnails/20.jpg)
github.com/tlossen /remodel
fork me: