WebDeveloper Weekly: ¿en qué contexto, cuándo y cómo uso NoSQL?

Algunos casos de uso:

  • Cuando los datos no son inherentemente relacionales. El ejemplo clásico de esto son los documentos.
  • Cuando el esquema cambia con frecuencia
  • Cuando quieres hacer una compensación CAP diferente. Vea este excelente diagrama http://blog.nahurst.com/visual-g… para referencia. Los RDBMS generalmente hacen bien la Consistencia y Disponibilidad, y son menos buenos en Tolerancia de Partición. Cuando sus datos se hacen muy grandes, la tolerancia de partición se vuelve cada vez más importante.
  • Cuando desee hacer escrituras muy rápidas, algunos sistemas NoSQL se destacan en esto.
  • Cuando su caso de uso de recuperación de datos es compatible con no usar combinaciones.

Recuerde, también puede usar sistemas híbridos:

  • Un salmonete de datos es RDBMS en la parte frontal, NoSQL en la parte posterior. (También puedes hacer lo contrario).

NoSQL es un término para una base de datos que no utiliza el lenguaje de consulta estructurado (SQL). La mayoría de las bases de datos populares desarrolladas en los años 90 y principios de los 2000 eran bases de datos SQL ( SQL Server, Oracle, MySQL, PostgreSQL y muchas otras ).

NoSQL podría representar una de las cientos de otras bases de datos, consulte aquí para obtener una breve descripción general: ¿Cuál es su revisión de NoSQL?

Generalmente recurro a nosql cuando hacer algo en sql sería costoso / lento o frívolo.

Un ejemplo sería realizar un seguimiento de las visitas a la página o los votos de un elemento. Obviamente, desea que estos sean atómicos para que todos los éxitos se cuenten correctamente, y asegurarse de no tener problemas de bloqueo con MySQL o PostgreSQL, aunque no es difícil, es un paso adicional. Sin embargo, hacer ping a Redis con una actualización es cuestión de unos minutos de escritura de código y sin configuración adicional.

Una vez que comience a tratar con registros que hacen referencia a otros registros o tenga que extraer un registro, encontrar un valor y luego extraer otros registros, volverá a hacer un trabajo de base de datos relacional y debería usar una base de datos relacional nuevamente. Redis, por ejemplo, definitivamente sufre del síndrome del martillo (todo comienza a parecerse a un clavo) y debes tener cuidado de usarlo adecuadamente.

Algunos buenos casos de uso para recurrir a nosql (o, por qué lo hice):

  • El esquema no es final y es probable que cambie o no sea coherente (es decir, un registro puede tener campos A y B, mientras que otro registro tiene campos D y E, etc.).
  • Debe realizar una gran cantidad de inserciones, pero no le importa la integridad referencial o está administrando esa integridad en su código. Los insertos NoSql (y me refiero a mongodb por experiencia) son ‘dispara y olvida’, por lo que son muy rápidos y baratos.
  • Usted opera a gran escala y necesita una forma fácil y económica de escalar horizontalmente. No desea tratar con la agrupación RDMBS. Mongodb, por ejemplo, puede fragmentar automáticamente sus datos en varias máquinas.
  • Necesita una interfaz de descanso basada en JSON fácil (Couchdb es su amigo en ese caso).
  • Desea archivar datos de manera que también pueda consultarlos más tarde

¿Uso NoSQL para resolver principalmente problemas difíciles de DevOps que rompen las plataformas RDBMS (SQL) tradicionales?

Aquí hay algunos pensamientos:

¿Tiene problemas de escritura masivos en un sistema que tiene propiedades HA / DR? es decir> 600k tps? Podría usar un almacén de valores de clave NoSQL como Voldermort, Dynamo o Cassandra.

¿Tiene problemas de lectura masiva (petabytes) de datos eventualmente consistentes que deben replicarse en múltiples geografías a un precio rentable y deben ser muy duraderos (HA / DR?) Hadoop?

¿Tiene preguntas analíticas que no funcionan bien en un RDBMS tradicional? Tal vez map reduce o columnar DB.

¿Tiene datos de gráficos que no se pueden representar en un RDBMS tradicional? Neo4J

La lista sigue y sigue…

Piense en casos de uso que rompen las plataformas tradicionales y sospecho que hay una solución NoSQL asociada.

Tropecé con este blog Cuándo usar NoSql. Espero que lo mismo también te pueda ayudar.

Recientemente, también enfrenté el mismo problema y recogí algunos puntos aquí ( http://www.satya-weblog.com/2012 …) y compartí usando mi blog.