Actualmente estamos corriendo al límite de los recursos con nuestra solución basada en servidor mssql.
Ahora tenemos muchas opciones tradicionales con respecto al próximo movimiento para abordar la carga:
- comprar CPU e IO más rápidos
- dividir algunos clientes para separar el servidor
- mover db al clúster
Todos son caros en términos de licencias y hardware o tiempo. Por lo tanto, quiero agregar otra opción moviendo todo el sistema a una solución escalable que promete el motor nosql cassandra.
Sin embargo, no estoy seguro ni tengo experiencia con las bases de datos noSQL, por lo que necesito comprender la estructura de los datos "no estructurados".
En nuestra aplicación, básicamente almacenamos los datos ingresados por los usuarios de varias maneras como listas de "valor-clave". Hay una tabla principal, que contiene el elemento principal (como un Pedido) y hay una tabla secundaria con los pares clave-valor que comprenden el contenido del pedido (como Order_Lines).
Business-wise, Order y OrderLines son una unidad. Pero debido al RDBMS, se almacenan en tablas y se deben unir todo el tiempo.
Durante las operaciones, a veces elegimos cargar solo la parte superior, pero la mayoría de las veces, cargamos la fila principal + algunos KVP para mostrar información útil.
Por ejemplo, en una lista general, mostramos el identificador de cabeza + algunos valores en columnas para cada fila.
ACTUALIZACIÓN: Almacenamos formularios de cualquier tipo. Entonces, básicamente almacenamos "documentos". Sin embargo, tenemos que preparar y buscar a través de estos formularios por cualquier valor, tipo, etc. El control de acceso a datos agrega otra capa de competencia en la base de datos.
Como puede suponer, la cantidad y disponibilidad de ciertos KVP varía de un objeto a otro. No existe una posibilidad válida para crear tablas individuales para cada tipo de objeto, ya que tendríamos que crear miles de tablas para las diferentes combinaciones de datos.
¿Este tipo de conjuntos de datos como "Diccionario" se almacenarían mejor en una base de datos noSQL? ¿Y tendremos beneficios de rendimiento de esto? ¿Cassandra modelaría estos head + KVP como un conjunto de datos? Al mirar la página web de cassandra y algunos tutoriales, tengo la impresión de que no hay mucha diferencia entre nuestro RDBMS y cassandra en términos de organización de datos, dejándonos con la misma gran cantidad de combinaciones si desea seleccionar 5 KVP para una lista para cada fila.
La iluminación es bienvenida, también están bien los consejos a los documentos que explican los problemas.