Прежде чем я задам вопрос, позвольте мне сначала описать мои мысли о SQLite.
Мне нравятся инструменты, которые являются небольшими, быстрыми и, что более важно, имеют только действительно необходимые функциональные возможности. Вот почему я люблю SQLite и немного меньше люблю MS-SQL.
Например: MS-SQL может обладать гораздо большей функциональностью, масштабируемостью и т. Д. И т. Д., Но его также может быть сложно установить, если вам не повезло. Конечно, я не говорю, что сложная установка - причина не выбирать конкретную базу данных.
Не поймите меня неправильно: MS-SQL - продукт хорошего качества. Я очень опытный с MS-SQL; Я очень хорошо понимаю продукт как профессионал. Я просто предпочитаю это меньше в некоторых случаях, когда это действительно не нужно (= не много пользователей, <10-15).
Какую функциональность базы данных вы действительно используете? По моему опыту это часто просто обычный SQL (SELECT, INSERT и UPDATE).
Мне нравится SQLite. Захватывающе быстро. Это очень легко "установить". Я думаю, что SQLite может сделать больше, чем утверждает, что может. Зачем использовать его только для однопроцессных / однопользовательских приложений? В конце концов: не многие приложения постоянно обращаются к базе данных.
Например: рассмотрим приложение ERP, скажем, с 15 пользователями. Почему SQLite не может быть использован для этого? Посмотрим правде в глаза: по моему профессиональному опыту, пользователи такого типа приложений будут обращаться к базе данных примерно 5-10% от общего времени использования приложения. В остальных 90-95% они просто смотрят информацию на экране, вводят данные в сетке / форме, и когда они сохраняют свои данные, это составляет не более 1 секунды времени базы данных. Fe: 1,5 минуты времени ввода против 1 секунды времени экономии.
Если файл базы данных SQLite заблокирован во время «экономии времени», другие пользователи, которым необходим доступ к базе данных, просто ждут, но они этого не замечают, поскольку время ожидания будет очень маленьким (незаметным). В коде вам просто приходится иметь дело с возможным «загруженным» временем базы данных, чтобы избежать исключений, но это не сложно сделать.
Какой-то парень, который должен думать так же, как я, даже создал клиент-серверное решение для SQLite: SQLitening . Это убедило меня в том, что я не обманываю себя.
Конечно, есть приложения с интенсивным использованием баз данных, где SQLite не подходит. Но, как я сейчас думаю, многие многопользовательские приложения, если они не превышают 15 пользователей или около того, должны нормально работать с SQLite.
Многие из наших клиентов не тратят много денег на аппаратное обеспечение, поэтому я часто сталкиваюсь с единственным сервером со всем, что на нем (Exchange, SQL (s), клиенты и т. Д.), И из-за этого почти "задыхаюсь". Если бы я мог доставить продукт, который не предъявляет высоких системных требований, мой клиент был бы счастлив. SQLite не добавляет веса (по крайней мере, немного), MS-SQL делает. Поэтому я бы не стал выбирать SQLite, потому что он бесплатный, дешевый или простой в установке. Я бы выбрал его по практическим / техническим причинам.
К вашему сведению: в моей профессии мы продаем продукты (нестандартные и стандартные, в основном связанные с ERP) клиентам, которые в среднем используют не более 5-6 человек. Есть некоторые исключения, но не более 10-15 пользователей.
Вопрос в том, правильно ли я считаю, что могу использовать SQLite для какого-либо многопользовательского приложения, такого как пример, который я описываю? Есть ли технические недостатки, о которых мне следует знать? Какой ваш опыт (отрицательный или положительный) поможет мне сделать правильный выбор?
Обновление: пожалуйста, не воспринимайте это как негативное мнение о других базах данных. В основном это все хорошие продукты. Просто делюсь своими мыслями здесь и интересуюсь вашим мнением по этому поводу.