¿Cómo almacenar datos en una base de datos sin tablas?


12

Todo lo que aprendí en la escuela fue SQL, que guarda los datos en tablas. En este momento estoy trabajando en un proyecto donde los datos se almacenan en archivos XML. Además, cada XML contiene una referencia a archivos visuales (JPEG).

El propio XML contiene más de mil puntos de coordenadas, más información adicional sobre los datos.

En mi opinión, no tendría sentido almacenar esta información en tablas. Además, tampoco podía almacenar archivos JPEG con SQL.

¿Cuál sería la solución adecuada o hay un error en el razonamiento de mi parte?

Como puede ver, soy bastante nuevo en las bases de datos. Por lo tanto, cualquier sugerencia constructiva, enlaces y consejos es bienvenida.


SQL Server ciertamente puede almacenar archivos JPEG usando el tipo de datos IMAGE. Sin embargo, no recomendaría eso. Sería mejor usar FILE-STREAM.
datagod

Cuando se trata de almacenar archivos JPEG (o cualquier otro archivo) en la base de datos, esto se ha manejado aquí en algunas de nuestras preguntas más frecuentes. En cuanto a la manera de almacenar XML y luego encontrar esos datos rápidamente, eso es más o menos para qué sirven los sistemas de almacenamiento de datos de documentos. Miraría una solución NoSQL sobre una base de datos relacional, sería más fácil trabajar con lo que imagino.
jcolebrand

Cuando se trata de XML, el DB2 de IBM le permite hacerlo. Y puede consultar los datos con SQL o XPath / XQuery. Su edición Express-C gratuita viene con la capacidad de hacer esto. Sin embargo, si pasa a Enterprise Edition, debe pagar para activar esta función.
Chris Aldrich

Respuestas:


11

Todo lo que necesitas es la persistencia de tu XML. Use una solución NoSQL o el sistema de archivos.

No hay ningún beneficio en usar un RDBMS, a menos que desee usarlo en lugar de NoSQL o el sistema de archivos.


¿Cuál sería una solución NoSQL apropiada? Estoy trabajando con C # en una aplicación winform por cierto.
チ ー ズ パ ン

@bodycountPP: No tengo experiencia con ellos ...
gbn

77
Verificaría RavenDB ( ravendb.net ) o CouchBase ( couchbase.com/couchbase-server/overview ) para usar en Windows. Se pueden encontrar otros a través de Google; he tenido una buena experiencia con esos productos. Obviamente su kilometraje puede variar :)
ITHedgeHog

10

Me bookmarked de Phil Factor blog Normalización y 'Ánima notitia copia' hoy como lo resume perfectamente el caso de y en contra de la normalización de ciertos tipos de datos. Ejecute la siguiente consulta en una instancia de SQL y vea si está de acuerdo.

SELECT * FROM sys.syslanguages

SQL le permite crear bases de datos relacionales. Sin embargo, incluso si huele mal, no es delito hacer cosas horriblemente no relacionales con una base de datos SQL siempre que sea necesario y se pueda notar la diferencia; no solo eso, sino también si conoce los riesgos y las implicaciones.

Usted mencionó que el archivo XML contiene "información adicional sobre los datos". ¿Hay algún beneficio en modelar esos metadatos en una base de datos relacional, tal vez con fines de interrogación? Si es así, puede haber un caso para extraer los datos relevantes y conservar el XML restante como un tipo de documento XML.

... si se le pasa una cadena JSON o XML, y se requiere que la almacene en una base de datos, entonces todo lo que necesita hacer es preguntarse, en su papel de Anima notitia copia (Alma de la base de datos) '¿Tengo alguna? interés en el contenido de este elemento de información? Si la respuesta es '¡No!' O 'nequequam! Entonces es un valor atómico, por complejo que sea.

El argumento de Phil Factor es que los campos no relacionales en una base de datos relacional son perfectamente aceptables si el campo se trata como atómico, es decir, no cambia, o cuando lo hace, todo el campo cambia, no una parte constituyente de él. La extensión natural de esto es que si su documento contiene elementos que le interesan, puede ser útil aplicar un modelo relacional a esos elementos.

Relevante para la pregunta pero principalmente para la fraseología, una última cita de Phil:

Naturalmente, nunca he creado a sabiendas una base de datos a la que Codd hubiera fruncido el ceño, pero en los bordes hay interfaces y fuentes de datos que he escrito que han provocado ataques entre los fundamentalistas de la Normalización.

¡No lo hemos hecho todos!


2
ACORD es un poco así. He visto personas que intentan calzarlo para que sirva como modelo de base de datos. Posteriormente, ACORD fue y obtuvo una licencia de un modelo de datos de Prima, por lo que incluso admiten que no era un gran modelo de datos. El estándar de mensajería ACORD tiene aproximadamente 7,000 campos definidos, de los cuales alrededor de 200 son obligatorios; la mejor descripción de ACORD (de alguien muy involucrado en los estándares de mensajería) es que "no sabe cómo administrar un proceso de estándares".
Preocupado por

3

En lo que respecta a las bases de datos Oracle, la respuesta es que no puede . Todos los datos en una base de datos se almacenan en tablas, incluso metadatos. Los datos se pueden almacenar en colas, pero esas son solo una forma diferente de usar tablas. Los archivos XML se pueden almacenar fuera de una base de datos, pero eso no cumpliría con el requisito "en la base de datos".

Yendo más allá de su pregunta planteada, los archivos JPEG o cualquier otro archivo pueden almacenarse en una base de datos. Requerirían una tabla y una columna LOB (BLOB o CLOB). El XML también podría almacenarse de esta manera, pero importar los datos XML a la base de datos le permitiría operar con los datos de una manera que ahora no se puede hacer fácilmente. También proporcionaría otros beneficios de las bases de datos, que incluyen: Redundancia reducida, Accesibilidad, Concurrencia, Escalabilidad, Interoperabilidad, Seguridad, Recuperación y Rendimiento.

Si los beneficios de una base de datos no promueven sus objetivos, entonces no use uno.


2

Me parece que está intentando implementar una base de datos espacial . Este es un tipo de base de datos relacional (o un complemento para productos de bases de datos existentes, por ejemplo, Oracle Spatial, postGIS) que admite funciones de tipos de datos espaciales y se utiliza para optimizar el almacenamiento y las consultas de datos relacionados con características espaciales como límites poligonales, puntos y capas. El XML que tiene suena como pares de coordenadas de límite y las imágenes asociadas suenan como elementos de arte para mostrar en ese límite. Si los datos se ajustan, considere una base de datos espacial relacional que ofrezca modelado espacial incorporado para proporcionar una funcionalidad que de otro modo sería difícil de implementar.


Además, si está implementando un Sistema de información geográfica , considere hacer esta pregunta en Sistemas de información geográfica .
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.