SQL está de vuelta
Después de muchos años de desvíos Big Data, NoSQL y Schema-on-Read, hay un claro retorno a SQL como la lengua franca para los datos operaciones.
Los desarrolladores necesitan la expresividad integral que proporciona SQL. Un mundo sin SQL ignora más de 40 años de investigación de bases de datos y da como resultado un código de espagueti codificado en las aplicaciones para manejar la funcionalidad que SQL maneja de manera extremadamente eficiente, como uniones, agrupaciones, agregaciones y (lo más importante) reversión cuando las actualizaciones salen mal.
SQL es un lenguaje poderoso que permite a los desarrolladores indicar lo que necesitan sin codificar cómo calcularlo
Afortunadamente, existe una arquitectura moderna para SQL llamada SQL distribuido que ya no sufre los desafíos de los tradicionales Sistemas SQL (costo, escalabilidad, rendimiento, elasticidad y flexibilidad de esquema).
El atributo clave de SQL distribuido es que los datos se almacenan en muchas ubicaciones de almacenamiento distribuido y el cálculo se lleva a cabo en un grupo de servidores en red. Esto produce un rendimiento y escalabilidad sin precedentes porque distribuye el trabajo en cada nodo de trabajo en el clúster en paralelo.
Si bien los sistemas de SQL distribuido comparten muchas características, también tienen profundas diferencias y algunos son más adecuados para ciertas cargas de trabajo.
Aquí, intentamos comparar Snowflake y Splice Machine como dos ejemplos de sistemas distribuidos de SQL que difieren de manera significativa.
Desafortunadamente, las líneas comparativas entre los sistemas de datos se han desdibujado. Por ejemplo, el simple hecho de que un sistema reclame las propiedades ACID de una base de datos (es decir, atomicidad, consistencia, aislamiento y durabilidad) no significa necesariamente que sea realmente un sistema OLTP transaccional capaz de alimentar aplicaciones (consulte este medio artículo para más detalles sobre este tema).
Otro ejemplo es la elasticidad: a medida que aumentan las cargas de trabajo, puede agregar más trabajadores para obtener más paralelismo o eliminar trabajadores y reducir costos a medida que las cargas de trabajo se contraen.
Muchos sistemas son elásticos, pero solo algunos pueden extender automáticamente los clústeres para obtener más (o menos) concurrencia o rendimiento. Estas son dos características de ejemplo de dónde Snowflake y Splice Machine difieren entre sí.
Aquí intentaremos proporcionar una visión equilibrada de estos sistemas, aunque representemos uno de ellos. En lugar de una vista característica por característica de cómo estos sistemas difieren, presentaremos una perspectiva de caso de uso.
A continuación presentaremos dos casos de uso radicalmente diferentes. Uno será un ajuste claro para Splice Machine y otro será un ajuste claro para Snowflake.
Snowflake y Splice Machine: Casos de uso
Consideremos dos casos de uso, tanto en la industria de seguros. El caso de uso uno es una aplicación heredada operativa que administra clientes, políticas, reclamos y pagos.
Es una aplicación SQL escrita en Java con un front-end Javascript desarrollado en React / Node.js y tiene las siguientes características:
- Cada entidad de la compañía de seguros tiene su propia instancia localizada de esta aplicación que se ejecuta en un territorio específico. estatutos, tarifas y políticas
- La aplicación debe estar disponible las 24 horas del día, los 7 días de la semana y tiene cargas de concurrencia máximas durante el horario comercial
- La aplicación también ejecuta un conjunto de informes operativos que los gerentes utilizan para obtener información diaria sobre el negocio
- Los gerentes también lo utilizan como una herramienta de consulta de inteligencia de negocios ad-hoc para interrogar a la empresa en busca de preguntas “únicas”
- Los usuarios de este sistema incluyen muchos grupos, incluidos agentes, gerentes y consumidores a través de portales de autoservicio
El caso de uso dos es un proceso de reconciliación que convierte la información comercial financiera de millones de transacciones individuales (en varios sistemas comerciales) en actualizaciones de contabilidad para una probabilidad del sistema financiero e SAP.
Esta aplicación tiene los siguientes atributos:
- Un conjunto complejo de transformaciones por lotes diseñadas en una herramienta ETL (como Informatica o Talend) produce datos agregados
- Se ejecuta diariamente para crear agregaciones en ejecución, así como mensualmente para el cierre de los libros.
- Los datos agregados se generan como archivos que son ingeridos por el sistema de reconciliación financiera
- Los analistas financieros revisan los informes por lotes y paneles construidos por la herramienta de informes (como Tableau o MicroStrategy)
- Los analistas realizan consultas ad-hoc para verificar los resultados
Snowflake y Splice Machine: Elección de una solución
Para cualquier persona familiarizada con Snowflake y Splice Machine puede ver que estos casos de uso han sido elegidos para señalar las fortalezas de cada motor individual.
El punto óptimo de Splice Machine se inclina hacia las cargas de trabajo operativas, mientras que el punto óptimo de Snowflake son las grandes cargas de trabajo del almacén de datos por lotes.
Si su problema es el caso de uso n.º 1, Splice Machine es la mejor opción por los motivos que presentaremos a continuación. Si su problema se asemeja al caso de uso # 2, entonces Snowflake es una mejor opción. Aquí hay un desglose para cada caso de uso:
Snowflake y Splice Machine: Carga de trabajo de aplicaciones heredadas
La aplicación heredada tiene los siguientes requisitos que requieren las características del sistema asociadas.
Entonces, ¿cómo se comparan los sistemas?
Comparación de características
Net-Net: para ejecutar una aplicación heredada que tenga usuarios concurrentes y esté siempre activa, un sistema que se inclina hacia cargas de trabajo operativas pero que también tiene fortalezas analíticas tendrá un mejor desempeño.
Ahora echemos un vistazo donde brilla Snowflake.
Carga de trabajo de reconciliación financiera
Este caso de uso tiene requisitos fundamentalmente diferentes y, por lo tanto, requiere características diferentes.
Requisitos de carga de trabajo de reconciliación financiera
Entonces, ¿cómo se comparan los sistemas?
Comparación de características
En este caso de uso, Snowflake fue diseñado para optimizar consultas analíticas de lotes grandes. El almacenamiento está optimizado tanto para esto como para el cómputo.
Al separar el cómputo del almacenamiento, el sistema Snowflake puede cerrar completamente todos los nodos de cómputo cuando no está en uso, creando un almacén de datos rentable.
También admite la optimización con estadísticas de metadatos para sacar el máximo provecho de cada trabajador.
Resumen
Híbrido Transaccional y Analítico versus Data Warehouse
Los motores de SQL distribuido de máquina de empalme Snowflake y Splice Machine son potentes y ciertamente se superponen en su capacidad para atender cargas de trabajo. Por lo tanto, sus criterios de selección dependerán de su caso de uso específico.
Si su caso de uso requiere un sistema de soporte de decisiones que admita valores precalculados, se pueda cerrar y escale elásticamente, entonces Snowflake es su elección. Por otro lado, la mayoría de los sistemas distribuidos de SQL no pueden alimentar las aplicaciones.
Si está buscando potenciar una aplicación de misión crítica que tiene una gran cantidad de usuarios simultáneos, que deben ejecutarse 24/7, entonces Splice Machine es su opción clara.
En la práctica, estos sistemas se implementan en una variedad de diferentes cargas de trabajo. Por ejemplo, además de las aplicaciones operativas, Splice también aborda muchas cargas de trabajo de almacenamiento de datos, análisis y aprendizaje automático con su arquitectura subyacente basada en Apache Spark.
Y además de los almacenes de datos, Snowflake a veces potencia las aplicaciones. Pero lo que hemos hecho aquí es tratar de representar un par de ejemplos extremos sobre el continuo de casos de uso para ayudarlo a elegir el mejor motor de SQL distribuido para su carga de trabajo.
Para obtener más información sobre cómo modernizar aplicaciones con Splice Machine, vea esto documento técnico .