Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Mongo on Rails
Search
Marcos Hack
July 13, 2012
Programming
0
35
Mongo on Rails
Palestra 'Mongo On Rails' apresentada no evento MongoDB São Paulo em 2012-07-13.
Marcos Hack
July 13, 2012
Tweet
Share
Other Decks in Programming
See All in Programming
Try creating your own orderedmap
kazamori
1
280
Namespace, What and Why
tagomoris
3
700
How to improve maintainability and readability of your automated tests? ( #scrumniigata )
teyamagu
PRO
1
130
[RubyKaigi 2024] Ruby Mixology 101: adding shots of PHP, Elixir, and more
palkan
0
130
Productivity is Messing Around and Having Fun
hollycummins
1
180
ソースコードを美しくたもつために ~コードレビューの認知限界を突破し、年間400リリースを達成する~
kotauchisunsun
1
770
slog登場に伴うloggerの取り回し手法の見直し / kamakura.go #6
arthur1
0
140
Three ways to use AI on Android: The Good, the Bad and the Ugly
marxallski
0
120
TypeScript 関数型スタイルでバックエンド開発のリアル
naoya
49
16k
An adventure of Happy Eyeballs
coe401_
1
240
Jetpack Composeとデザインシステム
rmakiyama
0
230
JS RPCを理解する
yusukebe
5
280
Featured
See All Featured
From Idea to $5000 a Month in 5 Months
shpigford
377
45k
Embracing the Ebb and Flow
colly
80
4.2k
Designing with Data
zakiwarfel
96
4.8k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
34
6.1k
Visualization
eitanlees
137
14k
Designing the Hi-DPI Web
ddemaree
276
33k
A Modern Web Designer's Workflow
chriscoyier
689
190k
Atom: Resistance is Futile
akmur
260
25k
Debugging Ruby Performance
tmm1
70
11k
GitHub's CSS Performance
jonrohan
1025
450k
Writing Fast Ruby
sferik
622
60k
StorybookのUI Testing Handbookを読んだ
zakiyama
13
4.7k
Transcript
Mongo On Rails Marcos Hack
[email protected]
http://engineering.abril.com.br/ MongoDB São Paulo
2012-07-12
Agenda Mongoid • Setup • Documentos • Persistência • Consultas
• Associações • Índices • Map/Reduce Cases Abril • Alexandria • Iba • Abril Educação • Click.à.Porter
Mongoid MongoDB v2.0.6 Rails Ruby 1.9.3-p194 3.2.6 2.4.11 (http://two.mongoid.org/) https://github.com/marcoshack/mongo_on_rails
3.0.0 (versão estável lançada em 8/7)
Mongoid Setup $ rails new catalog \ --skip-active-record $ bundle
install Gemfile
Mongoid Setup config/mongoid.yml $ rails g mongoid:config Formato alterado no
Mongoid ~> 3.0.0
Mongoid Documentos app/models/product.rb $ rails g model product
Mongoid Documentos app/models/product.rb Validações
Mongoid Documentos app/models/product.rb Atributos Dinâmicos config/mongoid.yml
Mongoid Documentos app/models/user.rb Atributos Protegidos
Mongoid Documentos app/models/product.rb Field Aliasing Somente no Mongoid ~> 3.0.0
Mongoid Persistência Model# Persistência Padrão create create destroy_all delete_all Model.
save save! delete destroy update_attributes update_attributes! update_attribute
Mongoid Persistência Model# Persistência Atômica Para operações atômicas usar o
nome real dos campos, e não seus aliases Mongoid ~> 3.0.0 inc pop rename set unset bit add_to_set push push_all pull pull_all
Mongoid Consultas Criteria Encadeamento (Chaining) Avaliação atrasada (Lazy Evaluation) Cursores
Mongoid Consultas Criteria all_in all_of also_in any_in any_of asc desc
excludes includes limit near not_in only order_by skip where whithout Model|Criteria. and distinct Criteria#
Mongoid Consultas Escopos Nomeados app/models/product.rb
Mongoid Consultas +Persisência Criteria + Modificações create build update update_all
delete_all destroy_all Criteria#
Mongoid Consultas +Persisência Criteria – Modif. Atômicas Somente no Mongoid
~> 3.0.0 Criteria# inc pop rename set unset bit push pull pull_all add_to_set
Mongoid Associações Embutido (embedded) (1:N) app/models/product.rb app/models/comment.rb
Mongoid Associações Embutido (embedded) (1:N)
Mongoid Associações Por Referência (1:N) app/models/product.rb app/models/category.rb
Mongoid Associações Por Referência (1:N) Mongoid ~> 3.0.0
Mongoid Associações Por Referência (N:N) app/models/product.rb app/models/category.rb
Mongoid Associações Por Referência (N:N)
Mongoid Map-Reduce Mongoid <= 2.4.11
Mongoid Map-Reduce Mongoid <= 2.4.11
Mongoid Map-Reduce Mongoid ~> 3.0.0 <= 2.4.11 ~> 3.0.0 out
counts emitted finalize input js_mode output reduced scope time MapReduce#
Cases Alexandria • Matérias • Metadados de imagens e vídeos
• Concursos culturais • Estabelecimentos ~ 300.000 documentos! • Master/Slave • Mongo 1.8 • 1x 12 núcleos e 96GB RAM • 1x um pouco menor como slave • Cluster usando ReplicaSet • Mongo 2.0.6 • 7 servidores
Cases Loja Iba • Metadados de publicações (~30.000 docs) •
Logs de transações e requests (~5mi docs) • Mongo 2.0.6 / Mongoid 2.4.11 / MongoMapper • 2 servidores Master/Slave (publicações) • 1 servidor (logs/requests) • Solução híbrida MySQL/MongoDB
Cases • Cadastro de escolas • Campanhas de livros escolares
• Mongo 2.0.6 / Mongoid 3.0.0 • 2 servidores Master/Slave • Solução 100% MongoDB Abril Educação
Cases • Tracking de eventos no site (~10mi docs) •
Mongo 1.8 / Mongoid 2.4.11 • 2 servidores Master/Slave • Solução híbrida MySQL/MongoDB click.à.porter
Mongo On Rails Marcos Hack
[email protected]
http://engineering.abril.com.br/ MongoDB São Paulo
2012-07-12