2009-12-02 48 views
6

Estoy trabajando en un sitio de redes sociales con un árbol genealógico que cumple con GEDCOM. Necesitamos decidir si debemos usar una estructura de base de datos horizontal o vertical para los perfiles de usuario. Entonces, me gustaría saber si alguien puede responder cuándo usar una estructura de base de datos horizontal y cuándo usar la estructura vertical de la base de datos.Base de datos horizontal y base de datos vertical

Encontré algunas respuestas para sitios de compras donde los campos no se deciden: se debe usar una estructura de base de datos vertical. Pero estoy confundido sobre qué usar para un sitio de árbol genealógico. ¿Debo usar vertical u horizontal?

Respuesta

8

Supongo que utiliza una base de datos relacional como Mysql, Ms sql, Sqlite, Postgresql u Oracle para el almacenamiento?

Gedcom es un estándar para el intercambio de información para que sepa cuántas columnas tendrá. Tal vez el estándar se amplíe con nuevas propiedades en el futuro, pero probablemente no habrá muchas propiedades nuevas. Puede ampliar fácilmente una tabla con algunas columnas nuevas.

Usaría una tabla 'horizontal' y no una entidad-attribyte-value-system (tabla vertical). Los sistemas de mesas verticales tienden a ser lentos. No se pueden indexar correctamente y pueden confundir el optimizador de consultas.

Se convierte en una historia diferente cuando los usuarios pueden definir nuevas propiedades en sus perfiles como eye colo (u) r o el favorito colo (u) r ellos mismos. ¿Qué tan flexible quiere que sean esos perfiles?

+0

uso sql server 2008. y el usuario no podrá agregar nuevas propiedades. – Radhi

0

Estoy de acuerdo con tuinstoel, el sistema vertical de mesa/EAV no solo es lento, sino también muy complejo. A veces es necesario escribir algunos de sus propios métodos de API que se ocupan de esas tablas y los desarrolladores solo se ocupan de esos métodos para evitar la complejidad.

Así que si no necesita agregar más campos, quédese con la tabla horizontal. Sin embargo, puede que necesite una tabla diferente si también va a admitir capacidad multilingüe. Pero le aconsejo que se quede con las tablas horizontales.

También estoy desarrollando un sitio que involucre un perfil de usuario y estoy usando tablas horizontales y si en el futuro se necesitarán diferentes idiomas, entonces modificaré solo los campos donde el idioma importará.

3

Las bases de datos verticales son excelentes para el almacenamiento de información y para el informe de solo lectura. Normalmente los vuelves a generar durante la noche. Su rendimiento de escritura suele ser muy malo, pero los SELECT son 10-100 veces más rápidos.

Un escenario típico para usar una base de datos vertical es la generación de informes olap al crear una instantánea (diaria) de datos y luego ejecutar consultas en su contra. La mayor parte del beneficio proviene de las consultas que solicitan solo un número relativamente pequeño de campos, p. cuando selecciona solo un puñado de campos de una tabla amplia y grande. Dicha consulta de consulta contra millones de registros (por ejemplo, calcular SUM/COUNT/AVG) tomará solo un segundo o dos.

Su caso no parece ser un buen candidato para una base de datos vertical.