portable manager mac instalar database sqlite3 dynamic-typing

database - mac - sqlite manager



La escritura dinĂ¡mica de SQLite3 (2)

SQLite3 usa escritura dinámica en lugar de escritura estática, en contraste con otros sabores de SQL. El sitio web de SQLite lee:

La mayoría de los motores de bases de datos SQL (todos los motores de bases de datos SQL distintos de SQLite, por lo que sabemos) utilizan una tipificación rígida y estática. Con la escritura estática, el tipo de datos de un valor está determinado por su contenedor, la columna particular en la que se almacena el valor.

SQLite utiliza un sistema de tipo dinámico más general. En SQLite, el tipo de datos de un valor está asociado con el valor en sí, no con su contenedor.

Me parece que esto es exactamente lo que no desea, ya que le permite almacenar, por ejemplo, cadenas en columnas de enteros.

La página continúa:

... la escritura dinámica en SQLite le permite hacer cosas que no son posibles en las bases de datos tradicionales tipificadas rígidamente.

Tengo dos preguntas:

  1. La pregunta del caso de uso: ¿Cuáles son algunos ejemplos en los que la escritura dinámica de SQLite3 es beneficiosa?
  2. La pregunta histórica / de diseño: ¿Cuál fue la motivación para implementar SQLite con escritura dinámica?

Esto se llama afinidad de tipo en SQLite.

Según el sitio web de SQLite, lo han hecho "para maximizar la compatibilidad entre SQLite y otros motores de base de datos". (ver el enlace de arriba)

SQLite admite el concepto de "afinidad de tipo" en las columnas. La afinidad de tipo de una columna es el tipo recomendado para los datos almacenados en esa columna. La idea importante aquí es que se recomienda el tipo, no es obligatorio. Cualquier columna todavía puede almacenar cualquier tipo de datos. Es solo que algunas columnas, dada la opción, preferirán usar una clase de almacenamiento en lugar de otra. La clase de almacenamiento preferida para una columna se llama su "afinidad".

Según tengo entendido, SQLite es exactamente para lo que lleva su nombre: un motor de base de datos muy ligero y minimalista. La sobrecarga asociada con la escritura fuerte probablemente esté más allá del alcance del proyecto, y es mejor dejarla en la aplicación que usa SQLite.

Pero nuevamente, de acuerdo con su sitio web, han hecho esto para maximizar la compatibilidad con otros motores de DB.


Si nos fijamos en, digamos, la página "about: config" de Firefox, creo que estas configuraciones realmente se almacenan en una base de datos SQlite (aunque no estoy 100% seguro). La ventaja de usar la escritura dinámica de SQlite es que cada valor en la configuración puede ser de tipo fuerte (por ejemplo, la configuración "alerts.totalOpenTime" es un entero, mientras que "app.update.channel" es una cadena) sin tener que tener una separada columna por tipo

Básicamente, es el mismo argumento que para los lenguajes de programación: ¿por qué la escritura dinámica en un lenguaje de programación en lugar de la escritura estática?