Como explicarlle á túa avoa a diferenza entre SQL e NoSQL

Como explicarlle á túa avoa a diferenza entre SQL e NoSQL

Unha das decisións máis importantes que toma un programador é que base de datos usar. Durante moitos anos, as opcións limitáronse ás distintas opcións de bases de datos relacionais que admitían a linguaxe de consulta estruturada (SQL). Estes inclúen MS SQL Server, Oracle, MySQL, PostgreSQL, DB2 e moitos máis.

Nos últimos 15 anos, moitas bases de datos novas entraron no mercado baixo o enfoque No-SQL. Estes inclúen tendas de valores clave como Redis e Amazon DynamoDB, bases de datos de columnas amplas como Cassandra e HBase, tendas de documentos como MongoDB e Couchbase e bases de datos de gráficos e motores de busca como Elasticsearch e Solr.

Neste artigo, tentaremos comprender SQL e NoSQL sen entrar na súa funcionalidade.
Ademais, divertirémonos un pouco polo camiño.

Explicando SQL á avoa

Avoa, imaxina que non son o teu único neto. En cambio, mamá e papá queríanse coma coellos, tiveron 100 fillos, logo adoptaron 50 máis.

Entón, queres a todos nós e non queres esquecer ningún dos nosos nomes, aniversarios, sabores de xeados favoritos, tallas de roupa, afeccións, nomes de cónxuxe, nomes de fillos e outros feitos súper importantes. Non obstante, afrontémolo. Tes 85 anos e a boa memoria non o podes manexar.

Por sorte, sendo o máis intelixente dos teus netos, podo axudar. Entón veño á túa casa, saco unhas follas de papel e pídoche que coces unhas galletas antes de comezar.

Nunha folla de papel, facemos unha lista chamada "netos". Cada neto gravado con algunha información significativa sobre el, incluído un número único que agora indicará como neto el é. Ademais, por motivos de organización, escribimos atributos con nome na parte superior da lista para que sempre saibamos que información contén a lista.

id
nome
aniversario
última visita
tamaño da roupa
xeado favorito
adoptado

1
Jimmy
09-22-1992
09-01-2019
L
chocolate de menta
teito

2
Jessica
07-21-1992
02-22-2018
M
Camiño rochoso
certo

… seguimos coa lista!

Lista de netos

Despois dun tempo, entendes todo e xa case rematamos coa lista! Non obstante, vólvese a min e dis: "Esquecemos engadir espazo para cónxuxes, afeccións, netos!" Pero non, non o esquecemos! Isto segue máis adiante e require unha nova folla de papel.

Entón saco outra folla de papel e sobre ela chamamos a lista Cónxuxes. Engadimos de novo os atributos que son importantes para nós ao principio da lista e comezamos a engadir filas.

id
id_neto
nome
aniversario

1
2
John
06-01-1988

2
9
Fernanda
03-05-1985

... máis cónxuxes!

Lista de cónxuxes

Nesta fase, explícolle á miña avoa que se quere saber quen está casada con quen, entón só ten que coincidir id na lista netos с id_neto na lista de cónxuxes.

Despois dun par de ducias de galletas, teño que botar unha sesta. "Podes continuar, avoa?" Vou botar unha sesta.

Volvo nunhas horas. Estás xenial, avoa! Todo parece xenial, excepto a lista afección. Hai preto de 1000 pasatempos na lista. A maioría deles son repetitivos; Que pasou?

id_neto
afeccións

1
ciclismo

4
ciclismo

3
ciclismo

7
carreira

11
ciclismo

… seguimos!

Sentímolo, esquecín dicir! Usando unha lista, só podes rastrexar afección. Despois, noutra lista temos que rastrexar netosquen están facendo isto afección. Imos chamarlle "Lista común". Ao ver que non che gusta, preocúpame e volvo ao modo de lista.

id
afeccións

1
ciclismo

2
carreira

3
natación

... máis afeccións!

Lista de pasatempos

Unha vez que teñamos a nosa lista de pasatempos, creamos a nosa segunda lista e chamámola "Pasatempos dos netos».

id_neto
hobby_id

4
1

3
1

7
2

… máis!

Lista xeral de afeccións dos netos

Despois de todo este traballo, a avoa ten agora un sistema de memoria xenial para facer un seguimento de toda a súa familia incriblemente numerosa. E entón -para que me manteña máis tempo- fai a pregunta máxica: "Onde aprendeches a facer todo isto?"

Bases de datos relacionais

Unha base de datos relacional é un conxunto de táboas descritas formalmente (no noso exemplo, estas son follas) desde as que pode acceder dado ou recollelos de varias maneiras sen ter que reorganizar as táboas Base de datos. Hai moitos tipos diferentes de bases de datos relacionais, pero por desgraza unha lista nun papel non é unha delas.

O distintivo das bases de datos relacionais máis populares é a linguaxe de consulta SQL (Structured Query Language). Grazas a el, se a avoa transfire o seu sistema de memoria a un ordenador, pode obter rapidamente respostas a preguntas como: "Quen non me visitou o ano pasado, está casado e non ten afeccións?"

Un dos sistemas de xestión de bases de datos SQL máis populares é o código aberto MySQL. Implésase principalmente como un sistema de xestión de bases de datos relacionais (RDBMS) para aplicacións de software baseadas na web.

Algunhas características clave de MySQL:

  • É bastante coñecido, moi utilizado e amplamente probado.
  • Hai moitos desenvolvedores expertos que teñen experiencia con SQL e bases de datos relacionais.
  • Os datos gárdanse en varias táboas, o que facilita o establecemento de relacións mediante claves primarias e estranxeiras (identificadores).
  • É doado de usar e eficiente, polo que é ideal para empresas grandes e pequenas.
  • O código fonte está baixo os termos da Licenza Pública Xeral GNU.

Agora esquece TODOS.

Explicando NoSQL á avoa

Avoa, temos unha gran familia. Ten 150 netos! Moitos deles están casados, teñen fillos, gustan de algo, etc. Á túa idade, é imposible lembrar todo de todos nós. O que necesitas é un sistema de memoria!

Afortunadamente, eu non quero que esquezas o meu aniversario e o sabor favorito do xeado, podo axudar. Así que corro ata a tenda máis próxima, levo un caderno e volvo á túa casa.

O primeiro paso que dou é escribir "Netos" en letras grandes e negras na portada do meu caderno. Despois paso á primeira páxina e empezo a escribir todo o que necesites lembrar de min. Uns minutos despois, a páxina parece algo así.

{ 
  "_id":"dkdigiye82gd87gd99dg87gd",
  "name":"Cody",
  "birthday":"09-12-2006",
  "last_visit":"09-02-2019",
  "clothing_size":"XL",
  "favorite_ice_cream":"Fudge caramel",
  "adopted":false,
  "hobbies":[ 
     "video games",
     "computers",
     "cooking"
  ],
  "spouse":null,
  "kids":[ 

  ],
  "favorite_picture":"file://scrapbook-103/christmas-2010.jpg",
  "misc_notes":"Prefers ice-cream cake on birthday instead of chocolate cake!"
}

Я: "Parece que está todo listo!"
Avoa: "Espera, que pasa co resto dos netos?"
Я: "Si exactamente. A continuación, asigna unha páxina para cada un".
Avoa: "Terei que escribir a mesma información para todos, como fixen para ti?"
Я: “Non, só se queres. Déixame mostrar".
Collendo o bolígrafo da miña avoa, paso a páxina e anoto rapidamente información sobre o meu curmán menos favorito.

{ 
  "_id":"dh97dhs9b39397ss001",
  "name":"Tanner",
  "birthday":"09-12-2008",
  "clothing_size":"S",
  "friend_count":0,
  "favorite_picture":null,
  "remember":"Born on same day as Cody but not as important"
}

Sempre que unha avoa precisa lembrar algo dun dos seus netos, só ten que navegar ata a páxina correcta do caderno dos seus netos. Toda a información sobre eles almacenarase alí mesmo na súa páxina, que pode cambiar e actualizar rapidamente.

Cando todo está feito, ela fai a pregunta máxica: "Onde aprendeches a facer todo isto?"

Bases de datos NoSQL

Hai moitos Bases de datos NoSQL ("non só SQL"). Nos nosos exemplos, mostramos base de datos de documentos. As bases de datos NoSQL modelan os datos de xeito que exclúen as relacións de táboas usadas nas bases de datos relacionais. Estas bases de datos fixéronse populares a principios da década de 2000 con empresas que necesitaban agrupación de bases de datos baseada na nube debido aos seus requisitos de escalado explícitos (como Facebook). Nestas aplicacións, a coherencia dos datos era moito menos importante que o rendemento e a escalabilidade.

Ao principio, as bases de datos NoSQL usáronse a miúdo para tarefas de xestión de datos de nicho. Basicamente, cando se trataba de aplicacións web e na nube, as bases de datos NoSQL procesaban e distribuían cantidades significativas de datos. Aos enxeñeiros de NoSQL tamén lles gustou o esquema de datos flexible (ou a súa falta) para que fosen posibles cambios rápidos nas aplicacións actualizadas.

Características principais de NoSQL:

  • Forma moi flexible de almacenar datos
  • Escalado horizontal a clusters
  • Posible secuenciación por persistencia/spread
  • Documentos que se identifican mediante claves únicas

Comparación detallada

MySQL require un esquema definido e estruturado.
NoSQL permítelle almacenar calquera dato nun "documento".

MySQL ten unha enorme comunidade.
NoSQL ten unha comunidade pequena e en rápido crecemento.

NoSQL é fácil de escalar.
MySQL necesita máis manexabilidade.

MySQL usa SQL, que se usa en moitos tipos de bases de datos.
NoSQL é un deseño baseado en bases de datos con implementacións populares.

MySQL usa unha linguaxe de consulta estándar (SQL).
NoSQL non usa unha linguaxe de consulta estándar.

MySQL ten moitas excelentes ferramentas de informes.
NoSQL ten varias ferramentas de informes que son difíciles de estandarizar.

MySQL pode mostrar problemas de rendemento para grandes datos.
NoSQL ofrece un excelente rendemento en big data.

Pensamentos 8 base

En compañía 8 baseonde traballo, proporcionamos un espazo de traballo para cada proxecto cunha base de datos relacional Aurora MySQL aloxada en AWS. Aínda que NoSQL é unha opción lóxica cando a súa aplicación esixe un alto rendemento e escalabilidade, cremos que a forte coherencia dos datos proporcionada por un DBMS é esencial cando se crean aplicacións SaaS e outro software empresarial.

Para as startups e os desenvolvedores que crean aplicacións empresariais que requiren informes, integridade transaccional e modelos de datos ben definidos, investir en bases de datos relacionais é, na nosa opinión, a opción correcta.

Obtén máis información sobre o desenvolvemento con Aurora, Serverless e GraphQL en 8base.com aquí.

Fonte: www.habr.com

Engadir un comentario