Pregunta

Estoy buscando métodos de almacenamiento de datos alternativos a SQL ( es decir, lo hago no quiere usar SQL, incluso para consultas ) y se encontró con unPocos basados en JSON.Hablar con amigos que hacen el trabajo de base de datos, dijeron que no debería considerar esto, pero no elaboraría. ¿Cuáles son los inconvenientes potenciales (y práctico) para usar JSON como un formato de archivo de almacenamiento de datos?


Pensé que JSON sería mejor que SQL por estos motivos:

  1. JSON es estrictamente definido y no tiene sabores (Oracle, Microsoft, MySQL, etc.)
  2. Dado que Google comenzó a hacer cromo, los intérpretes de JS han hecho lectura, análisis y salida JS (y, por lo tanto, JSON), un proceso de
  3. La base de datos la salida podría ser pura JSON , borrando la necesidad de un intérprete de hombre medio para los navegadores, etc.
  4. Entre otros ...

¿Fue útil?

Solución

Creo que es posible que desee echar un vistazo a las bases de datos NO-SQL: https://en.wikipedia.org/wiki/nosql

Si le gusta usar los datos similares a Json, entonces uno que he usado personalmente es MongoDB.

No lo he usado como una fuente principal / soltera de mis datos de la aplicación, sino solo para fines secundarios. Pero, supongo, puede intentar usarlo como su almacenamiento principal de datos también (creo que muchas personas lo hacen).

Lo que he probado, y fue bastante satisfactorio, fue MongoDB con C # y usando Mongovue como una solicitud de GUI para ejecutar consultas e interactuaciones con el DB. No estaba muy feliz con Mongovue, pero parece que era la mejor opción en ese momento.

Sin embargo, SQL DBS es muy bueno para definir relaciones en sus datos. P.ej. Referencia de una entrada en la Tabla A desde una entrada en la Tabla B, y ese tipo de cosas. Usando esas relaciones, puede unirte tablas y hacer muchas cosas interesantes. Creo que también es bueno para usted obtener una experiencia en este campo también.

MongoDB no se construye para definir relaciones (por lo que entiendo). Tiene el concepto de "documentos", donde almacena información en un formato similar a JSON (con llave / valores anidados). Puede consultar documentos, pero la unión parece que parece piratear su camino alrededor de su uso normal: ¿Cómo realizo el equivalente de unirse a SQL en MongoDB? Además, asegurando la consistencia de los datos (de una manera verdaderamente confiable) cuando se usa relaciones en Mongodb parece bastante imposible para mí. Pero incluso si estoy equivocado y es posible, será 10 veces más difícil logrando que con SQL DBS.

Pero puede echar un vistazo a la lista en Wikipedia y puede haber una mejor alternativa que MongoDB para usted.

Pero puede usar JSON puro también con ningún sistema DB.

Por lo tanto, en resumen de almacenamiento similar a Json (al menos) tiene (al menos) estos problemas:

  • no es bueno definir y utilizar relaciones
  • Cuando se utiliza relaciones, la integridad de los datos (o más probable, la integridad de referencia) es difícil.
  • Si no está utilizando un buen sistema DB, pero simplemente vuelva a JSON en un archivo, cuando ese archivo se vuelva demasiado grande, tendrá problemas de rendimiento. Imagínese consultando una matriz de objetos codificada de 1GB JSON para obtener los que desee. Tendrá que cargar la matriz completa en la memoria, correr a través de la totalidad (ya que no tendrá índices) y luego (si no se ha quedado sin memoria y su conexión, cuando no se ha convertido en una red, no ha caducado) usted obtendrá un resultado. La mayoría de los DB de NO-SQL como MongoDB y la mayoría de los DBS SQL no tienen tales problemas (al menos dentro de cantidades razonables de datos). Están afinados, apoyan la indexación, las referencias, los permisos, los roles y también puede definir el código de ejecución en el nivel de DB (como desencadenantes y procedimientos almacenados). Ciertamente, son más complejos, pero esa complejidad puede requerirse la mayoría de los tiempos para lograr el resultado final.

Otros consejos

JSON, o notación de objetos JavaScript, es un formato estándar abierto que utiliza texto legible por humanos para transmitir objetos de datos que consisten en pares de valor atributo.Se utiliza principalmente para transmitir datos entre un servidor y una aplicación web, como una alternativa a XML.

Está más viendo la comparación entre Base de datos vs de almacenamiento de archivos planos Realmente.

Incluso cuando se utiliza un DB relacional, la integridad de los datos (o la integridad referencial) sigue siendo dura porque las filas son, por lo general, se numeran.A menudo, las claves extranjeras no se hacen cumplir debido a esto.Cuando se produce una actualización de la fila, tiene 2 opciones.En primer lugar, 'Olvídate' la versión anterior.En segundo lugar, actualice la fila original y copie la versión anterior en una tabla de historial 'no relacionatoria' de puntería donde las claves externas son inútiles.La mayoría de los datos comerciales requieren actualizaciones.Las características para mantener la integridad referencial en las bases de datos relacionales son inútiles para este tipo de datos comerciales (lo que representa la mayoría de los datos empresariales). Lo que se necesita es una base de datos temporal, o una capa de abstracción que presenta a un usuario con la versión apropiada de una fila basada en un contexto de tiempo.Idealmente, en 2 dimensiones, es decir, tiempo de transacción y tiempo comercial (también conocido como tiempo válido).

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