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
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
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
16年目のピクシブ百科事典を支える最新の技術基盤 / The Modern Tech Stack Powering Pixiv Encyclopedia in its 16th Year
ahuglajbclajep
5
1k
SourceGeneratorのススメ
htkym
0
190
なぜSQLはAIぽく見えるのか/why does SQL look AI like
florets1
0
460
Patterns of Patterns
denyspoltorak
0
1.4k
Fragmented Architectures
denyspoltorak
0
150
humanlayerのブログから学ぶ、良いCLAUDE.mdの書き方
tsukamoto1783
0
190
0→1 フロントエンド開発 Tips🚀 #レバテックMeetup
bengo4com
0
560
MDN Web Docs に日本語翻訳でコントリビュート
ohmori_yusuke
0
650
AIによる高速開発をどう制御するか? ガードレール設置で開発速度と品質を両立させたチームの事例
tonkotsuboy_com
7
2.3k
フルサイクルエンジニアリングをAI Agentで全自動化したい 〜構想と現在地〜
kamina_zzz
0
400
AI によるインシデント初動調査の自動化を行う AI インシデントコマンダーを作った話
azukiazusa1
1
730
Lambda のコードストレージ容量に気をつけましょう
tattwan718
0
120
Featured
See All Featured
Marketing to machines
jonoalderson
1
4.6k
How to Ace a Technical Interview
jacobian
281
24k
Prompt Engineering for Job Search
mfonobong
0
160
Skip the Path - Find Your Career Trail
mkilby
0
54
AI Search: Where Are We & What Can We Do About It?
aleyda
0
6.9k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.4k
Principles of Awesome APIs and How to Build Them.
keavy
128
17k
Darren the Foodie - Storyboard
khoart
PRO
2
2.4k
Utilizing Notion as your number one productivity tool
mfonobong
3
220
Practical Orchestrator
shlominoach
191
11k
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
310
The SEO Collaboration Effect
kristinabergwall1
0
350
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