Pregunta

Me acaba de comenzar un nuevo trabajo en el que voy a tener que hacer una buena cantidad de trabajo con una base de datos de valores múltiples (el universo). La poca experiencia de la base de datos que tengo es en bases de datos relacionales (SqlServer) y estoy en busca de alguna información no sesgada sobre cuáles son los pros y los contras de una MVD se comparan con bases de datos relacionales.

Todo el mundo en la oficina o bien proviene de un fondo base de datos relacional (y odia el universo) o ha estado aquí durante años y le encanta.

¿Fue útil?

Solución

En primer lugar, un descargo de responsabilidad. Yo trabajo con UniData (DB hermana del universo) y ocasionalmente blog en él , así que no puedo pretender ser completamente imparcial; Voy a tratar, sin embargo.

Aquí están algunos puntos de la consideración de que:

  • Una gran diferencia entre una base de datos SQL y un Valor múltiple DB es que el MVDB no se adhiere a 1NF . Esto tiene ventajas y desventajas a la misma. Puede ser (y normalmente se) abusado, pero hay momentos en los que puede ser extremadamente funcional. El mayor beneficio es que significa que no siempre se necesita una tabla de unión que puede hacer ciertas consultas mucho más rápido.

  • Almacena meta-datos de una manera completamente nueva cuando se compara con DBs SQL regulares. Cada archivo / tabla no tiene un esquema concreto. En cambio, tiene 1 o más archivos 'diccionario' que se compone de los registros que indican cómo se deben interpretar los datos. Esto le permite tener no sólo almacenar múltiples interpretaciones de los datos (crudo / mayúsculas / minúsculas, campos combinados, etc.), sino también le permite realizar el equivalente de enumeraciones y se une. Puede ser muy potente si se hace derecha.

  • Por desgracia, aunque el concepto tiene mucho potencial, conjunto de herramientas de los DBMS es insuficiente. El desarrollo es impulsado sino un extremadamente pequeño conjunto de casos de empresas que parecen ser accionado por un 'keep-las-luces-on' mentalidad de sistemas de software existentes y envejecimiento que se construyeron en él. A pesar de que cuenta con herramientas para la integración (tales como conectores .NET, interfaz ODBC para las consultas SQL, etc.) tienen problemas. Por ejemplo, los UniObjects .NET interfaz carece de granulación en la seguridad (básicamente todo o nada).

  • No es sólo un DBMS, pero es esencialmente una plataforma de aplicación completa. A pesar de que Unibasic no es tan poderoso como decir un lenguaje basado en .NET, seguro que supera los pantalones frente a T-SQL y tiene una rápida vuelta para el bombeo de reglas de negocio.

Otros consejos

Como sugirió a Dave, bases de datos MV realmente están diseñados para funcionar mejor cuando se conoce la clave del registro que está intentando recuperar. Algunas personas se refieren a ellos como los sistemas de bases de datos de registro basado, en contraposición a SQL, que es un sistema de base de datos en conjunto.

Realmente depende de lo que usted está tratando de hacer, cómo necesita los datos que estructurarse, y qué otras herramientas que tiene disponible. Paso la mayor parte de mi tiempo trabajando en MV (productos de la revelación, en su mayoría) y que manejamos registros conjuntos en el 10,000,000+ con regularidad, y la velocidad está muy bien.

La fuerza base de datos de MV es cuando los datos es fluido. Nos encontramos con que la mayoría de nuestros clientes lo utilizan para aplicaciones como productos legales, médicos y financieros; aplicaciones en las que las relaciones son complejas y pueden cambiar rápidamente y drásticamente con el tiempo.

Es posible que desee mirar por encima del movimiento sin SQL, que comparte gran parte de los mismos conceptos, a pesar de MT y sin SQL realmente no son la misma cosa.

La desventaja principal del MV es menor en su estructura, lo que de herramientas. Usted encontrará generalmente que desde la base de desarrolladores es más pequeña, la caja de herramientas y ayuda disponible es menor. También puede encontrarse con que el lenguaje básico incrustado que la mayoría de las ofertas de darle el estilo de objeto carece de codificación que está acostumbrado. Hay veces incluso JavaScript parece que tiene más funcionalidad que un idioma.

Una vez dicho esto, ya que las bases de datos de MT son principalmente cadenas gigantes, el manejo de los idiomas cadena son excelentes. Son excelentes para la manipulación de HTML y XML directamente cadena.

supongo que la gran pregunta que tengo, está usted tiene preguntas específicas? No voy a abrir una guerra diciendo que es como pasar de Windows a Linux o un Mac, o incluso pasar de Debian a Red Hat, pero las estructuras y sistemas son diferentes, por lo que tienen diferentes conceptos, ventajas, desventajas y efectos . Si intenta manejar una base de datos SQL como MV (que se puede), usted encontrará que no es el mejor ajuste. Una base de datos MV mal diseñado puede ser un ejercicio de frustración. Una base de datos MV bien diseñado puede ser una cosa de la belleza.

bases de datos MV son conocimientos para exprimir el rendimiento impresionante de servidores relativamente de menor potencia.

Se utiliza un sistema de archivo de enlace hash que reduce las operaciones de más de acceso a archivos a una operación matemática y un solo lectura de disco cuando se conoce la clave de registro. En un sistema configurado correctamente, se lee desde un archivo archivo con 1.000.000.000 de registros ya no se que las de un archivo con 1.000 registros, siempre y cuando se conoce la clave de toma de grabación.

claves de registro tiene que ser único, y en aplicaciones donde una clave de registro se puede ajustar de una manera tal que pueda ser determinado mediante algoritmos o mediante programación, la sobrecarga generada en el acceso de base de datos puede ser mínimo. Pero, por supuesto, esto generalmente implica acceder a la base de datos de una manera que probablemente no se considera "relacional".

No hay pros y contras como tal - que simplemente utilizan diferentes métodos para almacenar valores. UniVerse utiliza un delimitador para separar los valores (IIRC que utiliza char (254) y char (253) para dividir los múltiples valores en un campo, y char (255) para separar los registros reales en el archivo de datos. Puedo estar equivocado sin embargo - que han pasado más de 10 años desde la última vez que lo utilizó). Algunas personas les gusta este método de almacenamiento de datos, al igual que algunas personas todavía prefieren coches de época sobre los finales de los años modelo, o algunas personas prefieren utilizar un caballo y el carro en lugar de un vehículo de motor moderno. (Por supuesto, esto es sólo mi opinión).

El almacenamiento de múltiples valores dentro de un medio campo que no tienen la tabla de SQL Server adicional que habría utilizado, que tiene efectivamente un nivel de desnormalización. Usando estos valores múltiples es nada fácil y bueno si se utiliza una tecnología que forma nativa va con UniVerse (usamos para utilizar un sistema de ventanas llamado CueBIC), pero becaomes un PITA cuando se conecta a la base de datos desde otro lenguaje como C ++ o VB - A continuación, tiene que leer un registro y separar los valores de uno mismo. Esto significa que también era difícil buscar en esos valores múltiples.

Pero, de nuevo, tal vez las cosas han cambiado desde la última vez que lo utilizó, tal vez alguien ha escrito un controlador agradable, así que puede fácilmente interfaz con el universo desde una plataforma .Net. Espero por su bien que tienen.

Escalado a una gran cantidad de elementos (registros) en archivos funciona bien. Escalar a una gran cantidad de valores o sub-valores en los registros creará problemas de rendimiento. necesidades de diseño de aplicaciones a ser sensibles a la limitación de las listas de valores y valores sub debajo del umbral de varios de 1000.

manipulación

cuerdas es excelente. Como es número entero de manipulación. Las lenguas MV básicos se escriben libremente así que no esperes demasiado de aplicación tanto del compilador. Dicho esto, ya elementos de origen MV básicos son como cualquier otro dato y el compilador es sólo otro verbo en el entorno de base de datos, escribir generadores de código y pre-compiladores es una brisa. Es un ambiente bueno para la construcción de una capa de herramientas debajo de su aplicación.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top