Upgrade to Pro — share decks privately, control downloads, hide ads and more …

NoSQL em 2020 - O que Mudou nos últimos 10 anos?

NoSQL em 2020 - O que Mudou nos últimos 10 anos?

Palestra do TDC Recife sobre o que mudou nos bancos de dados NoSQL desde 2008

deniswsrosa

October 30, 2020
Tweet

More Decks by deniswsrosa

Other Decks in Technology

Transcript

  1. • +15 de experiência • Especialista em NoSQL & Java

    • OSS contributor Denis Rosa deniswsrosa @deniswsrosa [email protected]
  2. 3 3 Confidential and Proprietary. Do not distribute without Couchbase

    consent. © Couchbase 2017. All rights reserved. Operational Analytics • Tempo de resposta entre μs até ~40ms • Dados são atualizados com frequência • Crítico para o negócio • Tempo de resposta >100 ms • data lake
  3. Dual Core Itanium 2 9050 (2008) • 85% dedicado à

    memória • 1% dedicado à processamento SOURCE: https://nwcpp.org/talks/2007/Machine_Architecture_-_NWCPP.pdf
  4. 6 • L1: 1.2ns - 2.1ns • L2: 3.0ns -

    5.3ns • L3, line unshared: 12.0ns - 21ns • L3, shared line: 19.5ns - 34.8ns • Local DRAM: >60ns • Remote DRAM: >150ns
  5. 7 Confidential and Proprietary. Do not distribute without Couchbase consent.

    © Couchbase 2017. All rights reserved. Id Name 1 Yuri 2 John RoleId UserId 1 1 2 2 User UserRoles
  6. 11 Confidential and Proprietary. Do not distribute without Couchbase consent.

    © Couchbase 2017. All rights reserved. 1 Yuri 1 1 Server 1 Server 2 Cross-Node Join
  7. 14 Confidential and Proprietary. Do not distribute without Couchbase consent.

    © Couchbase 2017. All rights reserved. https://www.allthingsdistributed.com/files/amazon-dynamo-sosp2007.pdf https://static.googleusercontent.com/media/research.google.com/en//archive/bigtable-osdi06.pdf
  8. 15

  9. 16 ID Username DateCreated 1 mgroves 2019-06-13 2 agroves 2019-06-14

    . . . . . . CartID Item Price Qty 1 hat 12.99 1 1 socks 11.99 1 2 t-shirt 15.99 1 . . . . . . . . public class ShoppingCart { public int Id; public string Username; public List<Items> Items; } ShoppingCart ShoppingCartItems
  10. 22

  11. 23

  12. 24 • Os principais NoSQLs tem mais de 6 anos

    de idade; • Já possuem integrações com dezenas de outras ferramentas; • São mais tolerantes à falhas; • Foram testados em cenários críticos; • Possuem retorno de médio e longo prazo; • Possuem suporte profissional; • Boa documentação; • ACID
  13. 25 + • Couchbase Cloud • Elastic Cloud / AWS

    • Atlas / AWS • Datastax Managed Svc / AWS • Neo4j Aura • …
  14. 27 NoSQLs requerem que você dedique um tempo para entender

    a arquitetura e para quais use cases ele foi pensado. ORMs nos deixaram mal acostumados, tratamos MySQL, Oracle, Postgres, e etc como se fossem a mesma coisa
  15. 28 • Tempo é um fator importante nas minhas queries?

    à Time Series • Tamanho + Strong consistency? à Document • Visão global dos dados? à Columnar • O relacionamento entre as entidades é importante ? à Graph • Busca difusa / relevância ? à Search Engine • Caching / dados desestruturados ? à Key-Value
  16. 29 2 Confidential and Proprietary. Do not distribute without Couchbase

    consent. © Couchbase 2017. All rights reserved. Relational Search Engine Key-Value Document Columnar Time Series Graph Multi-model
  17. 30 • Quanto preciso escalar? 2… 10 … 100 nós?

    • Que tipo de consistência eu preciso? • Preciso de transações? De qual tipo? • Como são minhas queries? • Qual o SLA para as minhas queries? • Qual é a estrutura dos meus dados? • Com que frequência são atualizados ? • Qual o meu orçamento? • …
  18. 33

  19. 34

  20. 35

  21. 46

  22. 47 key 1 { "name" : "matt", "address" : {

    "street" : "White Rd", "city" : "Grove City", "state" : "OH" } } key 2 { "name" : "emma", "address" : { "street" : "High St", "city" : "Columbus", "state" : "OH" } } SELECT address.city FROM myusers
  23. 48 key 1 { "name" : "matt", "favoriteFoods" : [

    "pizza", "cheesecake", "donuts" ] } key 2 { "name" : "emma", "favoriteFoods" : [ "donuts", "Lucky Charms", "chicken" ] } SELECT u.name FROM myusers u WHERE ANY f IN u.favoriteFoods SATISFIES f == 'pizza' END;
  24. 50