1 pontos por GN⁺ 2025-03-15 | 1 comentários | Compartilhar no WhatsApp

Dispositivos de IO e latência

  • Dispositivos de armazenamento não volátil são um elemento central dos sistemas computacionais modernos, pois podem armazenar dados mesmo quando a energia é desligada. Ao contrário de dispositivos de armazenamento volátil como registradores da CPU, cache da CPU e RAM, não exigem alimentação contínua.

Dispositivos de armazenamento em fita

  • Desde a década de 1950, os computadores usam unidades de fita para armazenamento digital não volátil. A fita é adequada para armazenar longas sequências de dados e é ideal em situações em que grandes volumes de dados precisam ser guardados com segurança, mas não precisam ser lidos com frequência.
  • A fita oferece baixo custo e longa vida útil, e ainda é usada em grandes repositórios de dados como os do CERN e da AWS.

Hard Disk Drive (HDD)

  • Hard disk drives oferecem acesso a dados mais rápido do que a fita e armazenam dados em discos metálicos circulares. Toda a área de superfície do disco está sempre disponível, reduzindo a latência de leitura e gravação de dados.
  • HDDs oferecem suporte a command queueing, permitindo executar vários comandos em paralelo.

Solid-State Drive (SSD)

  • Solid-state drives leem e gravam dados eletronicamente, sem partes mecânicas, e usam flash NAND para fornecer armazenamento não volátil.
  • SSDs podem otimizar o desempenho por meio de processamento paralelo e garbage collection. A forma como os dados são organizados pode afetar o desempenho.

Armazenamento na nuvem

  • A migração para a nuvem trouxe mudanças no desempenho de IO, e muitas empresas transferiram servidores e sistemas de banco de dados para a nuvem.
  • Em ambientes de nuvem, a separação entre armazenamento e computação é comum, o que oferece segurança e flexibilidade para os dados, mas pode causar queda de desempenho.

Separação entre armazenamento e computação

  • Tradicionalmente, os servidores usavam dispositivos de armazenamento não volátil conectados diretamente, mas na nuvem é comum conectar o armazenamento pela rede.
  • O armazenamento conectado pela rede oferece segurança para os dados, mas pode impactar negativamente o desempenho de IO.

Armazenamento local vs. em rede

  • SSDs NVMe locais oferecem velocidades de IO muito altas e menor latência do que o armazenamento conectado pela rede.
  • O armazenamento conectado pela rede pode ter limitações nas operações de IO, o que pode levar à degradação de desempenho.

Solução: Metal

  • Metal é uma solução oferecida pela PlanetScale que usa unidades SSD NVMe conectadas diretamente para fornecer excelente desempenho e escalabilidade.
  • Um cluster Metal é composto, por padrão, de um servidor principal e duas réplicas, garantindo a durabilidade dos dados e permitindo expandir a capacidade de armazenamento com facilidade.
  • Bancos de dados Metal não têm limitações artificiais nas operações de IO e podem executá-las com latência mínima.

1 comentários

 
GN⁺ 2025-03-15
Comentário do Hacker News
  • Menciona que o autor do blog claramente se divertiu muito ao escrever este texto. Criou visuais interativos usando milhares de linhas de JavaScript
  • Diz que apoia SQLite+NVMe há muito tempo. Isso representa um novo padrão, oferecendo a possibilidade de resolver problemas sem escalabilidade horizontal
    • Em problemas de desempenho, a latência é o fator mais importante
    • Isso é ainda mais importante especialmente quando o processamento precisa ser sequencial
    • Executar SQLite em NVMe pode trazer uma vantagem de latência que outros provedores não conseguem oferecer
    • Na maioria dos casos de uso reais, executar em memória não oferece uma vantagem tão grande sobre a persistência em NVMe
  • Elogia a riqueza de informações a ponto de quase esquecer que se trata de divulgação de produto. Menciona os ótimos visuais e a interatividade
  • Ao ver a animação de IO de disco, lembrou-se de Melvin Kaye
    • Mel não escrevia loops de espera por tempo
    • O mesmo valia quando a Flexowriter precisava de atraso entre os caracteres de saída
    • Ele posicionava instruções no tambor para que ficassem logo atrás da cabeça de leitura sempre que necessário
    • O tambor precisava completar uma rotação inteira para encontrar a próxima instrução
  • Diz que o blog é bom. Aponta que, em geral, o armazenamento em nuvem é "anormalmente lento"
    • Menciona que recentemente adicionou suporte para armazenar índices incrementais em S3/object storage
    • Diz que continuou usando NVMe por mais tempo por causa das vantagens de desempenho mencionadas em um artigo anterior
    • Afirma que seria bom se alguém revolucionasse essa área com uma oferta melhor
  • Aponta um aspecto do armazenamento distribuído que o artigo não abordou suficientemente
    • Alguns sistemas não oferecem suporte nativo à replicação
    • Um cluster Cassandra e o MySQL podem fazer replicação master-slave, mas muitos sistemas não conseguem
    • Ao usar armazenamento NVMe na nuvem, é preciso respeitar as janelas de manutenção e os drains iniciados pela nuvem
    • Separar armazenamento e computação permite que a operadora de nuvem mova a computação conforme necessário
    • Como os dados ficam independentes da computação, a operadora de nuvem pode gerenciar o sistema de dados e os drains
  • O Metal parece muito interessante. Menciona que, em um emprego anterior, tentou usar SSD local de instância do GCP e enfrentou sérios problemas de confiabilidade
    • Havia um problema em que blocos do dispositivo perdiam dados
    • Pergunta se essa situação melhorou
    • Pergunta qual tipo de máquina está sendo usado
    • Como solução, menciona o uso do disco de rede do Discord
  • PlanetScale Metal parece muito sólido. É sempre interessante ver uma grande redução de latência em um lançamento
  • Artigo muito bom. A visualização de gravações aleatórias está muito bem feita
    • Outro problema do armazenamento conectado por rede na nuvem é o limite de IOPS
    • Muitos provedores de nuvem, incluindo AWS e Google Cloud, usam esse modelo e limitam a quantidade de operações de IO que podem ser enviadas
    • Quando o armazenamento está conectado diretamente à instância de computação, não há limitação artificial nas operações de IO
    • É possível ler e gravar tão rápido quanto o hardware permitir
    • Pergunta se o limite de "IOPS" é um limite para um tipo específico de tráfego de rede
    • Pergunta se isso se refere ao tráfego de rede dos volumes EBS
    • Pergunta se isso permite reduzir custos, se é por causa de uma arbitragem estranha da AWS, ou se a eficiência vem de usar menos rede do EBS
    • Vê claramente que colocar armazenamento e computação na mesma máquina traz vantagens em latência
    • Pergunta se também há vantagem em throughput por custo
  • Pergunta como provedores de banco de dados "serverless" anunciam acesso de "baixa latência"
    • Eles usam object storage como S3, e isso parece ter latência bem pior do que armazenamento em rede
    • Menciona que construíram uma camada de cache e afirmam que manterão os dados em NVMe conectado localmente