Динамический контроль типов SQLITE3

SQLite3 использует динамический контроль типов, а не статический контроль типов, в отличие от других разновидностей SQL. Чтения веб-сайта SQLite:

Большинство механизмов базы данных SQL (каждый механизм базы данных SQL кроме SQLite, насколько мы знаем), использование статический, твердый ввод. Со статическим контролем типов тип данных значения определяется его контейнером - конкретный столбец, в котором хранится значение.

SQLite использует более общую динамическую систему типов. В SQLite тип данных значения связан с самим значением, не с его контейнером.

Мне кажется, что это точно, что Вы не хотите, поскольку это позволяет Вам сохранить, например, строки в целочисленных столбцах.

Страница продолжается:

... динамический контроль типов в SQLite позволяет этому делать вещи, которые не возможны в традиционных твердо введенных базах данных.

У меня есть два вопроса:

  1. Вопрос о варианте использования: Каковы некоторые примеры, где динамический контроль типов SQLITE3 выгоден?
  2. Исторический вопрос / вопрос о дизайне: Какова была мотивация для реализации SQLite с динамическим контролем типов?

18
задан Brad Larsen 22 March 2010 в 04:00
поделиться

2 ответа

Это называется сходством типа в SQLite.

Согласно веб-сайту SQLite, они сделали это «для максимальной совместимости между SQLite и другими механизмами баз данных». (см. ссылку выше)

SQLite поддерживает концепцию «сходства типов» для столбцов. Сходство типа столбца - это рекомендуемый тип для данных, хранящихся в этом столбце. Важная идея здесь в том, что тип рекомендуется, а не требуется. В любом столбце по-прежнему могут храниться данные любого типа. Просто некоторые столбцы, при наличии выбора, предпочтут использовать один класс хранения перед другим. Предпочтительный класс хранения для столбца называется его «сходством».

Насколько я понимаю, SQLite - это именно то, в честь чего назван - очень легкий, минималистичный движок базы данных. Накладные расходы, связанные со строгой типизацией, вероятно, выходят за рамки проекта и лучше всего доверить приложению, использующему SQLite.

Но опять же, согласно их веб-сайту, они сделали это для максимальной совместимости с другими движками БД.

9
ответ дан 30 November 2019 в 09:25
поделиться

Если вы посмотрите, скажем, "Firefox" о: config », я считаю, что эти настройки действительно хранятся в базе данных SQlite (хотя я не уверен на 100%). Преимущество использования динамической типизации SQlite заключается в том, что каждое значение в настройках может быть строго типизировано (например, параметр «alerts.totalOpenTime» является целым числом, а «app.update.channel» - строкой) без необходимости иметь одну отдельную столбец по типу.

В конце концов, это тот же аргумент, что и для языков программирования: почему динамическая типизация в языке программирования предпочтительнее статической?

4
ответ дан 30 November 2019 в 09:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: