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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Marcos Hack
July 13, 2012
Programming
0
36
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
AIによる開発の民主化を支える コンテキスト管理のこれまでとこれから
mulyu
3
260
AgentCoreとHuman in the Loop
har1101
5
230
AIエージェント、”どう作るか”で差は出るか? / AI Agents: Does the "How" Make a Difference?
rkaga
4
2k
Unicodeどうしてる? PHPから見たUnicode対応と他言語での対応についてのお伺い
youkidearitai
PRO
1
2.5k
AIフル活用時代だからこそ学んでおきたい働き方の心得
shinoyu
0
130
組織で育むオブザーバビリティ
ryota_hnk
0
170
Oxlintはいいぞ
yug1224
5
1.3k
疑似コードによるプロンプト記述、どのくらい正確に実行される?
kokuyouwind
0
380
15年続くIoTサービスのSREエンジニアが挑む分散トレーシング導入
melonps
2
200
Automatic Grammar Agreementと Markdown Extended Attributes について
kishikawakatsumi
0
190
今から始めるClaude Code超入門
448jp
8
8.7k
AI Agent の開発と運用を支える Durable Execution #AgentsInProd
izumin5210
7
2.3k
Featured
See All Featured
Art, The Web, and Tiny UX
lynnandtonic
304
21k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
5.8k
Designing for Performance
lara
610
70k
Being A Developer After 40
akosma
91
590k
Raft: Consensus for Rubyists
vanstee
141
7.3k
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
580
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
94
Everyday Curiosity
cassininazir
0
130
Why Our Code Smells
bkeepers
PRO
340
58k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
62
49k
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.7k
Technical Leadership for Architectural Decision Making
baasie
1
240
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