2010-04-09 23 views
10

Recientemente se ha hablado mucho sobre NoSQL.¿Por qué usar NoSQL sobre Vistas Materializadas?

La razón número 1 por la que oigo que la gente usa NoSQL es porque comienzan a desnormalizar sus datos DBMS tanto, para aumentar el rendimiento, que terminan con una sola tabla con todos sus datos dentro de esa única tabla .

Sin embargo, con las Vistas materializadas, puede mantener sus datos normalizados, pero tenerlos almacenados como una sola vista de tabla por las mismas razones por las que usaría NoSQL.

Como tal, ¿por qué alguien usaría NoSQL sobre Vistas Materializadas?

+0

Pensé que la razón real detrás de NoSql era el hecho de que SQL no escala a> petabytes de datos. La falta de normalización y de características avanzadas de sql en general (como la consistencia garantizada (coff)) es el resultado y más un efecto secundario de la arquitectura distribuida, no un objetivo de diseño real. –

Respuesta

6

Una de las razones es que las vistas materializadas tendrán un bajo rendimiento en una situación OLTP en la que existe una gran cantidad de INSERT frente a SELECT.

Cada vez que se insertan datos, los índices de vistas materializadas deben actualizarse, lo que no solo ralentiza las inserciones, sino que también las selecciona. La razón principal para usar NoSQL es el rendimiento. Al ser básicamente un almacén de claves hash, obtiene lecturas/escrituras increíblemente rápidas, a costa de un menor control sobre las restricciones, lo que generalmente debe hacerse en la capa de aplicación.

Por lo tanto, aunque las vistas materializadas pueden ayudar a leer, no hacen nada para acelerar las escrituras.

+0

Eso es incorrecto. Oracle afirma que las Vistas Materializadas aumentan en gran medida el rendimiento. http://www.oracle.com/technology/products/oracle9i/daily/jul05.html – JustinT

+2

@JustinT: Por supuesto, su comercialización lo dirá. La realidad es que en algunos casos (situaciones de lectura pesada) son geniales. En situaciones de mucha escritura, no son geniales, que es el punto que estaba haciendo al especificar OLTP, más arriba. – RedFilter

+0

Incrementa enormemente el rendimiento en comparación con qué? "Oracle9i mejora significativamente la funcionalidad de vistas materializadas" ... en comparación con lo lento que era antes. No se compara con las arquitecturas de estilo NoSQL. – NebuSoft

3

NoSQL no se trata de obtener un mejor rendimiento de su base de datos SQL. Se trata de considerar opciones que no sean el almacenamiento SQL predeterminado cuando no hay una razón particular para que los datos estén en SQL.

Si tiene una base de datos SQL establecida con un esquema bien diseñado y su único requisito nuevo es un rendimiento mejorado, agregar índices y vistas es definitivamente el enfoque correcto.

Si necesita guardar un objeto de perfil de usuario que sabe que solo necesitará acceder a él mediante su clave, SQL puede no ser la mejor opción; no obtiene nada de un sistema con todo tipo de funcionalidad de consulta que ganó ' uso, pero ser capaz de omitir la capa ORM mientras mejora el rendimiento de las consultas que utilizará es bastante valioso.

+2

Los datos no pueden ser 'en SQL'. ¿Quisiste decir 'en las relaciones'? Hay una diferencia en apartarse del lenguaje SQL y apartarse del modelo relacional, aunque 'NoSQL' los combina. Tenga en cuenta también que los índices y vistas ayudarán poco en un entorno pesado de inserción/actualización. – beldaz

0

Otra razón es la naturaleza dinámica de NoSQL. Cada vista que crees necesitará crearse de antemano y una "conjetura" sobre cómo una aplicación podría usarla.

Con NoSQL puede cambiar a medida que los datos cambian; Variando dinámicamente sus datos para adaptarse a la aplicación.

Cuestiones relacionadas