AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / Perguntas / 204379
Accepted
David Eyk
David Eyk
Asked: 2018-04-19 14:31:58 +0800 CST2018-04-19 14:31:58 +0800 CST 2018-04-19 14:31:58 +0800 CST

Quando usar várias tabelas no DynamoDB?

  • 772

As melhores práticas do DyanmoDB deixam claro que:

Você deve manter o menor número possível de tabelas em um aplicativo do DynamoDB. A maioria dos aplicativos bem projetados requerem apenas uma tabela.

Acho divertido, então, que quase todos os tutoriais que vi lidando com o DyanmoDB têm um design de várias tabelas.

Mas o que isso significa na prática?

Vamos considerar um aplicativo simples com três entidades principais: Usuários, Projetos e Documentos. Um usuário possui vários projetos e um projeto pode ter vários documentos. Normalmente, temos que consultar os projetos de um usuário e os documentos de um projeto. As leituras superam as gravações por uma margem significativa.

O design de tabela de um tutorial ingênuo usaria três tabelas:

Users
Hash key
user-id

Projects
Hash key       Global Index
project-id     user-id

Documents
Hash key       Global Index
document-id    project-id

Poderíamos facilmente entrar em colapso Projecte Documentem uma Documentstabela:

Documents
Hash key    Sort key        Global Index
project-id  document-id     user-id

Mas por que parar por aí? Por que não uma mesa para governar todos eles? Já que o Useré a raiz de tudo...

Users
Hash key    Sort key
user-id     aspect
---------   ---------
foo         user                   email: [email protected] ...
foo         project:1              title: "The Foo Project"
foo         project:1:document:2   document-id: 2     ...

Então teríamos um Índice Global, digamos, no emailcampo para pesquisas de registro do usuário e outro no document-idcampo para pesquisas diretas de documentos.

É assim que deve funcionar? É legítimo lançar tipos de dados tão divergentes na mesma tabela? Ou o segundo design de duas tabelas é uma abordagem melhor?

Em que ponto seria correto adicionar uma segunda tabela?

database-design dynamodb
  • 1 1 respostas
  • 7841 Views

1 respostas

  • Voted
  1. Best Answer
    Kirk
    2018-05-10T15:45:09+08:002018-05-10T15:45:09+08:00

    Sim, é legítimo fazer o que você está dizendo. Ambos são na verdade. Existem algumas variáveis ​​que você não tem aqui e podem ajudar a orientar como o modelo de dados deve ser feito.

    1. Que tipo de escala você deseja alcançar com esse aplicativo e modelo de dados?
    2. Dos padrões de acesso do aplicativo, qual é a proporção de leituras entre esses padrões. Ou seja, qual deles é mais atingido em relação aos outros.
    3. Dos padrões de acesso que você lista, quantas vezes por segundo eles são executados?

    Por exemplo, se 80% de todas as leituras são para encontrar os usuários em um projeto e isso precisa acontecer 30.000/s, mas em seu aplicativo poucas pessoas vão além e descobrem os documentos para os projetos, então é é 20% do total de leituras e pode ser apenas 2.000 leituras/s. Esse primeiro é o "hot path" do seu aplicativo e deve ser otimizado para.

    Pense também desta forma, com um banco de dados não relacional como o DynamoDB, você pode otimizar como seu aplicativo usa e acessa os dados e não como um banco de dados relacional onde você precisa se preocupar muito com como ele é armazenado no banco de dados.

    • 7

relate perguntas

  • Os índices filtrados podem ajudar a melhorar as consultas baseadas em uma hora inserida ou isso deve ser evitado?

  • Qual é a diferença entre os tipos de dados MySQL VARCHAR e TEXT?

  • É melhor armazenar os valores calculados ou recalculá-los a pedido? [duplicado]

  • Armazenar vs calcular valores agregados

  • Quais são algumas maneiras de implementar um relacionamento muitos-para-muitos em um data warehouse?

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host

    • 12 respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Jin conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve