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
240
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
89
Aprendizados de um projeto Elixir OTP
amandasposito
4
590
SOLID - Dependency inversion principle
amandasposito
0
81
Como concorrência funciona em Elixir?
amandasposito
1
230
Programação Funcional & Elixir
amandasposito
3
130
Novidades no Rails 5
amandasposito
0
99
Rails Engines & RSpec
amandasposito
0
230
Elixir e Phoenix
amandasposito
3
570
Elixir em 5 minutos
amandasposito
1
93
Other Decks in Technology
See All in Technology
SREじゃなかった僕らがenablingを通じて「SRE実践者」になるまでのリアル / SRE Kaigi 2026
aeonpeople
1
130
Introduction to Sansan for Engineers / エンジニア向け会社紹介
sansan33
PRO
6
66k
3分でわかる!新機能 AWS Transform custom
sato4mi
1
270
全員が「作り手」になる。職能の壁を溶かすプロトタイプ開発。
hokuo
1
630
入社1ヶ月でデータパイプライン講座を作った話
waiwai2111
1
200
JuliaTokaiとしてはこれが最後かもしれない(仮) for NGK2026S
antimon2
0
130
ブロックテーマでサイトをリニューアルした話 / 2026-01-31 Kansai WordPress Meetup
torounit
0
170
Introduction to Bill One Development Engineer
sansan33
PRO
0
350
AWS Devops Agent ~ 自動調査とSlack統合をやってみた! ~
kubomasataka
2
270
日本語テキストと音楽の対照学習の技術とその応用
lycorptech_jp
PRO
1
370
DEVCON 14 Report at AAMSX RU65: V9968, MSX0tab5, MSXDIY etc
mcd500
0
230
Regional_NAT_Gatewayについて_basicとの違い_試した内容スケールアウト_インについて_IPv6_dual_networkでの使い分けなど.pdf
cloudevcode
1
190
Featured
See All Featured
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
61
49k
Visualization
eitanlees
150
17k
Designing for Performance
lara
610
70k
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.1k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.6k
Stop Working from a Prison Cell
hatefulcrawdad
273
21k
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.2k
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
0
99
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
160
Code Review Best Practice
trishagee
74
20k
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
210
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