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
Ecto, você sabe o que é ?
Search
Amanda
August 06, 2016
Technology
4
200
Ecto, você sabe o que é ?
Palestra apresentada no encontro do ELUG-SP
Amanda
August 06, 2016
Tweet
Share
More Decks by Amanda
See All by Amanda
Lessons Learned From an Elixir OTP Project
amandasposito
2
47
Aprendizados de um projeto Elixir OTP
amandasposito
4
370
SOLID - Dependency inversion principle
amandasposito
0
46
Como concorrência funciona em Elixir?
amandasposito
1
200
Programação Funcional & Elixir
amandasposito
3
110
Novidades no Rails 5
amandasposito
0
72
Rails Engines & RSpec
amandasposito
0
190
Elixir e Phoenix
amandasposito
3
520
Elixir em 5 minutos
amandasposito
1
79
Other Decks in Technology
See All in Technology
VS CodeでAWSを操作しよう
smt7174
8
1.7k
Gitlab本から学んだこと - そーだいなるプレイバック / gitlab-book
soudai
4
440
20分で完全に理解するGrafanaダッシュボード
hamadakoji
3
680
Terraformあれやこれ/terraform-this-and-that
emiki
8
1.4k
生産性向上チームの紹介
cybozuinsideout
PRO
1
870
自己改善からチームを動かす! 「セルフエンジニアリングマネージャー」のすゝめ
shoota
6
800
本当のAWS基礎
toru_kubota
0
530
KubeCon EU 2024 Recap “Kubernetes Policy Time Machine: Where to Next?”
ryysud
0
220
今年のRubyKaigiはProfiler Year🤘
osyoyu
0
170
Google Cloud の AI を支える裏側のインフラを垣間見る!
maroon1st
0
360
FrontDoorとWebAppsを組み合わせた際のリダイレクト処理の注意点
kenichirokimura
1
530
Cracking the KubeCon CfP
inductor
2
250
Featured
See All Featured
Imperfection Machines: The Place of Print at Facebook
scottboms
260
12k
Typedesign – Prime Four
hannesfritz
36
2.1k
Fontdeck: Realign not Redesign
paulrobertlloyd
76
4.9k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
78
43k
Principles of Awesome APIs and How to Build Them.
keavy
121
16k
Facilitating Awesome Meetings
lara
42
5.6k
Reflections from 52 weeks, 52 projects
jeffersonlam
345
19k
Build The Right Thing And Hit Your Dates
maggiecrowley
24
2k
How to train your dragon (web standard)
notwaldorf
73
5.2k
The Art of Programming - Codeland 2020
erikaheidi
42
12k
The Invisible Customer
myddelton
114
12k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
34
8.9k
Transcript
Ecto Você sabe o que é?
@amandasposito @amsposito @amandasposito
None
Agenda • O que é? • Seus benefícios; • Componentes;
• Novidades da última versão.
O que é?
“Ecto is a domain specific language for writing queries and
interacting with databases in Elixir.”
object-relational mapping
object-relational mapping
None
Inspiração
LINQ Language Integrated Query
Parte do .NET Framework - Nov/2007
C#
Ecto
None
Vantagens
Composição
Você pode continuar a usar uma query em outra parte
do codigo
None
Isso é possível por causa dos Protocols de Elixir
None
Protocols ?
"Elixir provides protocols as a mechanism for polymorphism." http://elixir-lang.org/getting-started/protocols.html http://blog.plataformatec.com.br/2014/09/writing-assertive-code-with-elixir/
None
Sobre dados
Evita SQL injection
Interpolação e Casting de dados
Valores externos e expressões em Elixir podem ser adicionados a
uma query com ^ http://elixir-lang.org/getting-started/pattern-matching.html#the-pin-operator
None
None
Type safety
name == 1 ** (Ecto.Query.TypeCheckError) the following expression does not
type check:
Componentes
• Repo • Schema • Changeset • Query
Nosso modelo de dados
None
Ecto.Repo
Repo.all(query) https://hexdocs.pm/ecto/Ecto.Repo.html
Repo.start_link()
Ecto.Schema
None
None
None
Ecto.Changeset
None
None
None
Ecto.Query
None
None
https://hexdocs.pm/ecto/Ecto.Query.html#preload
https://hexdocs.pm/ecto/Ecto.Query.html#preload
https://hexdocs.pm/ecto/Ecto.Query.html#join/5
https://hexdocs.pm/ecto/Ecto.Query.html#join/5
https://hexdocs.pm/ecto/Ecto.Query.html#join/5
https://hexdocs.pm/ecto/Ecto.Query.html#preload
https://hexdocs.pm/ecto/Ecto.Query.html#preload
Novidades da última versão
Model -> Schema
Insert_all *http://blog.plataformatec.com.br/2016/05/ectos-insert_all-and-schemaless-queries/
None
Relacionamentos many_to_many
Subqueries
Chaves compostas
Otimização em connection pooling *https://github.com/elixir-ecto/ecto/releases/tag/v2.0.0 *http://blog.plataformatec.com.br/2016/04/ecto-2-0-0-rc-is-out/
Testes concorrentes, mesmo dependendo do banco de dados
Falei de mais né? Falei de mais né?
Resumindo
É uma Lib para você poder interagir com o banco
de dados
Consegue escrever queries no banco de dados escrevendo código Elixir
Composição / SQL Injection / Type Safety
Repo / Schema / Changeset / Query
https://github.com/amandasposito/ecto_demo
Obrigada!
Referências • http://blog.plataformatec.com.br/2016/05/ectos-insert_all-and-schemaless-queries/ • http://blog.plataformatec.com.br/2016/04/ecto-2-0-0-rc-is-out/ • https://hexdocs.pm/ecto/Ecto.html • https://github.com/elixir-ecto/ecto/wiki/Ecto-Basics •
https://changelog.com/208/ • https://www.youtube.com/watch?v=SJRfujy9vLA&feature=youtu.be&t=18m38s • https://www.youtube.com/watch?v=snka1bAtZS0