SQL Database
Crie bancos de dados relacionais na Azion, execute instruções SQL pela API, por uma function ou pelo Azion Console e ordene linhas por distância vetorial.
Um banco de dados relacional guarda registros em tabelas de linhas e colunas, em que cada coluna carrega um tipo de valor e cada linha é um registro. SQL é a linguagem que lê e altera esses registros: uma instrução descreve as linhas que você quer, e o banco de dados as encontra. Como serviço gerenciado, um banco de dados é criado por uma requisição em vez de instalado, então não há servidor para provisionar, nem engine para atualizar, nem replicação para configurar.
SQL Database executa esses bancos de dados na infraestrutura distribuída da Azion. Um banco de dados é um objeto que você cria por nome, e toda instrução é endereçada a um deles. Os bancos de dados são totalmente compatíveis com ACID e o dialeto é o do SQLite, então uma instrução que você já escreve roda sem alteração. Uma instância principal recebe todas as escritas, e réplicas de leitura respondem às leituras. Use SQL Database para armazenar telemetria de dispositivos IoT, acompanhar o inventário de centros de distribuição de comércio eletrônico, analisar logs de acesso em busca de ataques de segurança ou gerenciar dados de acesso.
Primeiros passos Guias do SQL DatabaseInstruções e resultados
SQL alcança um banco de dados por um único endpoint, que recebe um array de strings SQL e retorna uma entrada por string:
A resposta carrega as colunas, as linhas e o que a instrução custou:
statementscarrega uma ou mais strings SQL.CREATE TABLE,INSERTeSELECTsão todos strings nesse único array, então uma única chamada mistura mudanças de schema, escritas e leituras.columnserowscarregam o conjunto de resultados. Cada entrada derowsé uma linha, com seus valores na ordem das colunas.rows_readerows_writtensão as duas métricas que a Azion cobra, e cada instrução reporta as suas.- Uma instrução que falha ainda responde HTTP
200, e sua entrada carregaerrorno lugar deresults. Leiadata[].errorantes de lerdata[].results.
Se você conhece SQLite, você conhece o dialeto: as strings dentro do array são SQL comum. Para as instruções que o engine aceita, consulte a referência de linguagem do SQLite.
Caminho de uma instrução
Uma instrução que falha não faz a requisição falhar. A chamada responde HTTP 200 tanto se todas as instruções tiverem sucesso quanto se uma delas não tiver, então a linha de status descreve a requisição e nunca o SQL dentro dela.
- Você cria um banco de dados com
POST /databasese umname. Ele responde a instruções assim que seustatusindicacreated, cerca de 15 segundos depois. - Cinco interfaces enviam instruções ao endpoint de query desse banco de dados: Azion Console, a API da Azion, a biblioteca
azion, o móduloazion:sqldentro de uma function e o EdgeSQL Shell. - O array
statementsé executado na ordem em que lista as instruções, e pelo menos 100 instruções em uma chamada são executadas com sucesso. - Uma instrução que escreve é aplicada na instância principal, enquanto uma leitura é respondida por uma réplica de leitura, então nada escreve diretamente em uma réplica.
- Cada instrução retorna uma entrada em
data, que carregaresultscomcolumns,rows,rows_read,rows_writtenequery_duration_ms. - Uma instrução que falhou carrega
errornessa entrada, e as entradas ao redor dela continuam carregando seus resultados.
Para as instâncias, o ciclo de vida de um banco de dados e o que uma instrução custa, consulte Como o SQL Database funciona.
O que SQL Database abrange
- Interfaces. Azion Console, a API da Azion v4, a biblioteca
azionpara Node e TypeScript, o móduloazion:sqldentro de uma function e o EdgeSQL Shell, uma ferramenta de linha de comando. Todas as cinco alcançam os mesmos bancos de dados. - Dialeto SQL. O do SQLite, que é a razão pela qual um schema existente e uma query existente são aproveitados. Os tipos e as funções vetoriais o estendem, e nada mais.
- Disponibilidade. SQL Database é um produto em Preview em todos os planos de serviço. Não é habilitado por padrão em uma conta, e o acesso é solicitado por meio de um ticket de suporte. Para solicitá-lo, consulte Suporte Técnico.
- Limites. O nome de um banco de dados tem de 6 a 50 caracteres, entre letras, números e o hífen, e é único na conta. Uma tabela guarda até 2.000 colunas, um vetor carrega até 65.536 dimensões e uma requisição de listagem retorna até 100 bancos de dados. A quantidade de bancos de dados, o tamanho de cada um e o armazenamento por conta são incluídos por plano. Para cada limite e o que acontece ao ultrapassá-lo, consulte Limites do SQL Database.
- Recomendações e falhas. Boas práticas cobre a leitura da chave de erro de cada instrução, a consulta do status de um novo banco de dados antes da primeira query e a indexação de uma coluna vetorial antes da primeira query de vizinho mais próximo. Quando uma requisição de criação é rejeitada, quando uma instrução retorna
errorou quando o EdgeSQL Shell encerra na inicialização, consulte Solução de problemas. - O que ele não faz. SQL Database armazena registros relacionais, então arquivos não estruturados pertencem ao Object Storage e pares de chave e valor ao KV Store. Um banco de dados não pode ser renomeado, e
activenão pode ser alterado depois da criação:PATCHePUTrespondem405. Azion CLI não carrega nenhum comando SQL, e o provider Terraform da Azion não publica nenhum recurso SQL.
Vector search
Uma coluna vetorial guarda um embedding, a representação numérica de um texto, de uma imagem ou de outro valor, na mesma tabela das colunas comuns. Uma única instrução, portanto, filtra por uma cláusula WHERE e ordena por distância vetorial, e nenhum serviço separado guarda uma segunda cópia dos dados.
A coluna é declarada como um tipo blob que carrega a quantidade de dimensões, um índice a marca para busca aproximada de vizinho mais próximo e vector_top_k retorna as linhas mais próximas:
É daqui que a etapa de recuperação de uma aplicação de retrieval-augmented generation (RAG) lê: AI Inference serve o modelo, e o banco de dados serve as linhas que o fundamentam. Para os tipos de coluna, as funções de distância, o índice e os limites, consulte Vector search.