Перш ніж я задаю питання, дозвольте спершу описати свої думки щодо 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, оскільки він безкоштовний, дешевий або простий в установці. Я вибрав би це з практичних / технічних причин.
FYI: За моєю професією ми продаємо продукцію (на замовлення та стандартну, в основному пов'язану з ERP) клієнтам, де в середньому не більше 5-6 людей будуть використовувати продукт. Є деякі винятки, але не більше 10-15 користувачів.
Питання: чи я правий, думаючи, що я можу використовувати SQLite для деяких багатокористувацьких додатків, як, наприклад, описаний нами приклад? Чи є якісь технічні недоліки, про які я повинен знати? Які ваші переживання (негативні чи позитивні) допоможуть зробити правильний вибір?
Оновлення: Будь ласка, не сприймайте це як негативне судження інших баз даних. Це в основному всі прекрасні продукти. Просто ділюся своїми думками тут і цікавлюсь вашими думками з цього приводу.