Как я могу получить больше возможностей СУБД, но все еще использовать SQLite? - PullRequest
2 голосов
/ 26 августа 2009

Я решил использовать SQLite для своего личного проекта по разработке, потому что он просто возник из моего компьютера, по-видимому, по собственному желанию, и я хотел узнать больше об этом. Проблема в том, что я начинаю скучать по многим функциям, к которым я привык в тяжелых СУБД: хранимые программы, ограничения, DRI, сложные типы данных, такие как DateTime и т. Д.

Мне действительно нравится концепция «база данных как файл», но я обнаруживаю, что с самого начала реализую множество функций целостности.

Итак, как следует из названия, мне любопытно: есть ли в продукте дополнительные функции, о которых я просто не знаю? Существуют ли инструменты или библиотеки (предпочтительно для .Net), которые добавляют функции по мере необходимости? Есть ли еще какая-нибудь более надежная версия?

Я использую Mono 2.4 и Mono.Data.SQLite.

Ответы [ 4 ]

5 голосов
/ 26 августа 2009

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

Поскольку SQLite использует манифестную типизацию, вы можете хранить любой тип в любом столбце. Точно не нужны"сложные типы данных, такие как DateTime", потому что вы можете хранить большие двоичные объекты (сериализованные данные) где угодно или можете хранить все, что хотите, в виде строки. Обратите внимание, что в ядре SQLite есть ряд функций datetime - они просто работают с числами или строками (или обоими из-за автоматического приведения), в зависимости от функции. Там нет реальной необходимости для типа даты, когда здесь достаточно строки. Это один из способов, которыми SQLite остается таким маленьким и переносимым.

2 голосов
/ 26 августа 2009

К сожалению, SQLite не поддерживает некоторые приятные функции, к которым вы привыкли. Вам просто нужно привыкнуть работать без них, если вы хотите его использовать.

Однако существуют другие однофайловые БД, которые работают таким образом. Например, VistaDB поддерживает Mono (он управляется на 100%) и предоставляет хранимые процедуры, ограничения и т. Д. Он имеет большую часть того же набора функций, что и MS SQL, включая очень похожий интерфейс (хотя есть и другие). тонкие различия).

2 голосов
/ 26 августа 2009

Я думаю, что ключ к названию, SQ Lite !

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

Существуют альтернативные базы данных , которые вы могли бы встраивать.

0 голосов
/ 26 августа 2009

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

Например, хранимые процедуры. Какая разница, если SQLite управляет ими или если ваша программа это делает? они оба находятся в одном процессе и в одном и том же пространстве памяти! это просто слой поверх хранилища. Более того, вы можете использовать свой собственный язык вместо «процедурного SQL». Аналогично для сложных типов и ограничений.

всего несколько предостережений:

  • Вы должны написать недостающие слои, SQLite не предоставляет их. (OTOH, они будут соответствовать вашему вкусу и потребностям).
  • Чтобы действительно обрабатывать ограничения в вашем собственном слое, вы должны быть уверены, что все обращаются через ваш слой.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...