Si los sistemas NewSQL funcionan como se anuncia, ¿por qué alguien debería usar un DB NoSQL?

Definiciones
Si bien su declaración sobre el estado de las cosas no está completamente equivocada, no creo que realmente capture la distinción primaria MySQL / NoSQL. Su descripción toma más de un enfoque pro-NoSQL de lo que creo que la realidad justifica. Lo pondría de esta manera:

Bases de datos relacionales (por ejemplo, MySQL)

  • Las bases de datos relacionales son excelentes para mantener datos estructurados y normalizados.
  • Para la gran mayoría de los usos (como 99% o más), las bases de datos relacionales se escalan con bastante facilidad (escala vertical + replicación de esclavos
  • Incluso para casos de uso de alto rendimiento, las bases de datos relacionales pueden escalar (ver Facebook), pero requiere un poco de esfuerzo. (Pero no necesariamente mucha mano de obra; de nuevo, vea Facebook)

NoSQL

  • Las bases de datos NoSQL son excelentes para contener datos menos estructurados; específicamente donde un grupo de elementos de datos se adjunta a una clave única y se recupera mediante esa clave única
  • Teóricamente, las bases de datos NoSQL escalan “sin esfuerzo”. (En la práctica, estaría totalmente en desacuerdo con “sin esfuerzo”, pero esperaría que en unos años, el escalado se acerque “sin esfuerzo” … y algunas de las arquitecturas NoSQL son ciertamente mejores para un escalado fácil que cualquier base de datos relacional, MongoDB en particular ) (Es de destacar que es muy fácil escalar en las bases de datos NoSQL alojadas, como SimpleDB, pero eso es solo porque la empresa que realiza el alojamiento ha hecho el trabajo duro por usted)
  • Las bases de datos NoSQL no son buenas formas de manejar datos altamente estructurados
  • [en soapbox] Creo que las bases de datos NoSQL se consideran mejor como bases de datos de “redes sociales” y “rastreadores de documentos / web”, y que la gran mayoría de otros datos son mejores en bases de datos relacionales. Debido a que Silicon Valley está tan de moda para todo “social” en este momento, NoSQL parece tan relevante, si no más relevante, para todos los casos de uso de bases de datos, cuando en realidad, es solo la solución adecuada para una pequeña minoría de casos de uso de bases de datos. [/ fuera de la caja de jabón]

NewSQL

  • Matthew Aslett acuñó “NewSQL” en una publicación de blog (http://blogs.the451group.com/inf…), y esencialmente define NewSQL como productos que hacen que las bases de datos relacionales sean tan fáciles de escalar como las bases de datos NoSQL son / deberían ser.
  • Hay tres formas en que los proveedores de NewSQL pueden alcanzar este estado “NewSQL”: (1) como complemento de las bases de datos relacionales existentes (como ScaleBase), (2) como una base de datos relacional alojada (como Xeround o NuoDB) o (3 ) como una nueva base de datos relacional independiente (como VoltDB)

Responder
Ok, con las definiciones anteriores, puedo responder a su pregunta: “¿Por qué alguien debería usar NoSQL con NewSQL?” Y la respuesta es bastante simple: si tiene datos menos estructurados, las bases de datos NoSQL serán mejores para usted que MySQL. No me importa lo increíbles que sean VoltDB o NuoDB; Twitter va a estar mejor con NoSQL directo, porque la arquitectura de NoSQL es mejor para los datos que Twitter almacena y recupera.

Entonces, tal vez una mejor pregunta sería: “¿Por qué alguien debería usar una base de datos relacional si los sistemas NewSQL funcionan como se anuncia?” Creo que hay al menos dos razones: (1) costo (ninguno de los sistemas NewSQL, si desea ampliarlos significativamente, son gratuitos), y (2) complejidad: lanzar una pila LAMP hoy es increíblemente fácil, y hay mucho soporte para el viejo MySQL 5.x en todo; NewSQL es de última generación.

Divulgación: en BuildFax, utilizamos ScaleBase y somos grandes admiradores.

Agradezco la respuesta de Joe. Sin embargo, no estoy de acuerdo con su métrica de costos. Sospecho que el TCO de ejecutar estos almacenes de datos estará dominado por una combinación de arrendamiento de hardware / servidor virtual, operaciones y desarrollo, no por los costos de licencia del software de la base de datos. Hay implementaciones de VoltDB basadas en las versiones comunitarias de VoltDB que no han pagado ningún costo de licencia para el software. (Descargo de responsabilidad: trabajo para VoltDB).

Hay una gran variedad de almacenes de datos: creo que las diferencias en las capacidades de consulta, la eficiencia del procesamiento y las cargas de trabajo previstas (¿tamaño de almacenamiento sin procesar? ¿Rendimiento? ¿Latencia?) Y durabilidad son más interesantes que los no / nuevos nombres de sql.

En blekko, no usamos ningún SQL en nuestro motor de búsqueda, porque esa interfaz es inapropiada para casi todos nuestros datos. Nuestros datos son estructurados y relacionales, pero no de una manera que el SQL pueda manipular eficientemente y con un código fácil de entender.

Para nosotros, no importa si NewSQL hace que SQL sea mucho mejor, incluso si un cerdo tiene lápiz labial, sigue siendo un cerdo y somos vegetarianos.

More Interesting

¿Qué valor proporciona el uso de un enfoque orientado a objetos?

¿Cuál es la mejor manera de contactar a los desarrolladores en grandes compañías de software para ser un orador invitado en un curso universitario?

¿Cuál es la forma de aprender las pruebas de software?

¿Cuál es la diferencia en las oportunidades profesionales entre los 2 cursos: ingeniería de software y bioinformática?

¿Cómo leemos la cardinalidad en un diagrama UML o en un diagrama E / A?

¿Por qué es más difícil contratar desarrolladores que otros puestos?

¿Qué tan comunes son los trabajos de ingeniería de software que le permiten trabajar 4 horas al día? ¿Están disponibles solo para personas con mucha experiencia?

¿Cuál es el tema más candente en la automatización de procesos robóticos?

En una empresa de tecnología, ¿cuál es la diferencia entre un director / compañero de ingeniería y un gerente de ingeniería (Sr / Dir / VP)?

¿Es posible construir una aplicación similar a Quora usando AWS Lambda?

Cómo comenzar a desarrollar aplicaciones y programar software

¿Cuál es la diferencia entre un arquitecto de software y un arquitecto de soluciones?

¿A qué proyectos de código abierto escritos en C / C ++ son fáciles de contribuir?

¿Qué campo de ingeniería es mejor para alguien que quiere desarrollar software o construir productos electrónicos como ventiladores eléctricos, auriculares, ratones y teclados?

¿Cuánta estructura de datos y conocimiento de algoritmos debo obtener para ser un mejor ingeniero de software?