Referência rápida

Folha de dicas do Erlang ETS (Erlang Term Storage)

Guia rapido de referencia para Erlang ETS em Elixir e Erlang: inicializacao de tabelas, controle de acesso, tipos de tabelas e navegacao.

· Publicado

ETS (Erlang Term Storage) e um banco de dados chave-valor em memoria embutido no runtime Erlang/OTP (BEAM).

🔗 Relacionado: Folha de dicas da Linguagem Elixir

Inicialização de tabela e operações básicas

# Cria uma nova tabela nomeada
table = :ets.new(:user_cache, [:set, :public, :named_table])

# Insere tuplas na tabela
:ets.insert(:user_cache, {:user_1, "Alice", 30})
:ets.insert(:user_cache, {:user_2, "Bob", 25})

# Busca registros por chave
result = :ets.lookup(:user_cache, {:user_1})
# => [{:user_1, "Alice", 30}]

# Exclui um registro ou limpa a tabela
:ets.delete(:user_cache, :user_1)
:ets.delete_all_objects(:user_cache)

# Destroi a tabela completamente
:ets.delete(:user_cache)

Tipos de tabela (Table Types)

Configura a semantica da tabela nas opcoes de criacao:

Type Duplicate Keys Ordering Notes
:set No Unordered Tipo padrao; a chave e o primeiro elemento; nao ordenado
:ordered_set No Ordered Chaves ordenadas na ordem de termos do Erlang; busca O(log N)
:bag Yes Unordered Permite multiplas chaves identicas, proibe tuplas identicas
:duplicate_bag Yes Unordered Permite tuplas totalmente identicas

Controles de acesso (Access Controls)

  • :protected: Todos os processos podem ler; apenas o proprietario pode escrever (Padrao).
  • :public: Qualquer processo pode ler e escrever simultaneamente.
  • :private: Apenas o processo proprietario pode ler e escrever.

Navegação em tabelas :ordered_set (Traversal)

# Funcoes de navegacao entre chaves
first_key = :ets.first(:user_cache)
next_key  = :ets.next(:user_cache, first_key)
prev_key  = :ets.prev(:user_cache, next_key)
last_key  = :ets.last(:user_cache)

Temas relacionados