Який хороший вибір бази даних для невеликого додатка .NET? [зачинено]


180

Я розробляю невеликий додаток з C # в .NET і хочу мати невелику базу даних з легкою вагою, яка не використовує великих ресурсів.

Чи можете ви перелічити деякі з найвідоміших програмного забезпечення бази даних про легку вагу .


Відповіді:


192

14/06/2016 Так ... все ще отримують результати: - /


17.03.2014 Я все ще отримую висновки за це, пам’ятайте про дату, на яку було відповідено спочатку. Хоча основні три перелічені пункти все ще є повністю життєздатними, перелік буде схильний до того, що він стає невдалим. Існують додаткові технології баз даних, які не перераховані.


У вас є кілька негайно впізнаваних і безкоштовних варіантів:

Завантаження SQL Server Compact постачається з постачальником ADO.NET, на який вам потрібно буде вказати код. Можливо, у завантаження SQLite його немає, ось ось посилання:

http://sqlite.phxsoftware.com/

Усі троє використовують SQL, хоча, ймовірно, з кількома обмеженнями / примхами. Студія управління працює з Compact і LocalDB, тоді як для SQLite вам знадобиться інший інструмент інтерфейсу, такий як SQLite Administrator:

http://sqliteadmin.orbmu2k.de/

Є альтернативи NoSQL, такі як:

Особисто я б уникав використання MS Access на тлі інших безкоштовних варіантів. Ви не можете помилитися з LocalDB, Compact або SQLite. Всі вони є прекрасними невеликими базами даних, які відносно швидко працюють у невеликій оперативній пам’яті - особисті переваги щодо релігійних аспектів щодо сподобання продукту Microsoft, я думаю :-)

Я використовую Sterling для програмування Windows Phone, оскільки він створений для використання Isolated Storage. Я бачив лише статті про RavenDb, але можу вам сказати, що це база зберігання документів на JSON.

Не плутати ситуацію (перейти з SQLite, SQL Server Express LocalDB або SQL Server Compact Edition), але там є інші вбудовані / локальні бази даних, деякі є реляційними, інші об'єктно-орієнтовані:

Не всі з них є безкоштовними. Підтримка SQL / LINQ / in-proc відрізняється у всіх. Цей список лише для цікавості.

Зараз також є Karvonite , проте посилання на галерею кодів порушено. Коли він знову з’явиться в прямому ефірі, я розглядаю цю проблему для розробки WP7.


11
+1 для SQL Server CE. Замість того, щоб встановлювати SQL-сервер поряд із вашим додатком, ви можете просто використовувати dc-адреси SQL Server CE і мати файл бази даних у робочому каталозі програми. Простий.
Філ

2
RavenDB - це справді база даних документів, але це API набагато потужніше, ніж прості пари імен та значень. Проблема полягає в тому, що це не безкоштовно для комерційних проектів, якщо ви шукаєте безкоштовні альтернативи.
JCallico

@JCallico Я визнаю, я трохи узагальнював резюме, але сумніваюся, хтось сприйме те, що я сказав, як євангелію.
Адам Холдсворт

@Brendan Long, там не існує реалізації SQL, що можна сказати про його 100% стандарт.
Поп Каталін

1
Замість того, щоб залишати невелике важке для читання повідомлення у верхній частині вашої відповіді, що пояснює, що інформація застаріла. Можливо, буде простіше просто оновити та / або додати свою відповідь та включити деякі приклади доступних сьогодні варіантів.
Джеймс Шоу

58

Я б рекомендував SQLite . Ми використовуємо його майже для всіх програм, які ми розробляємо, де я працюю.

Він невеликий і компактний. Це вимагає, щоб DLL знаходилася в каталозі додатків, але вам не доведеться встановлювати інше програмне забезпечення, як Access або SQL Server. Також, як зазначено нижче в даніелькза, "SQLite є загальнодоступним доступом, тому вам не доведеться турбуватися про ліцензування взагалі". Це дійсно може мати велике значення.

Ви можете використовувати System.Data.SQLite або csharp-sqlite, щоб отримати доступ до нього в додатку C #, використовуючи ті самі методи, що і у SQL або OleDB.

Вам також знадобиться програма для редагування / управління базою даних. Найкращий на мою думку - SQLite Studio . Ось ще декілька:
SQLite Admin
SQLite 2009 Pro (внизу сторінки)
Оновлення - 25.07.2011 - Більше додатків SQLite (питання тут про ТАК)

Ось більше про SQLite:
SQLite у Вікіпедії
Компанії, які використовують SQLite

Спеціальні функції: Окрім того, якщо ви шукаєте основні функції SQLite і не бачите жодної, яка вам подобається, ви можете створити свої власні функції. Ось кілька прикладів:
З прикладу SO
Anoter


8
Одне доповнення: SQLite є загальнодоступним доступом, тому вам не доведеться взагалі турбуватися про ліцензування.
danielkza

@MikeWebb Чи буде Sqlite працювати з додатками ClickOnce без необхідності встановлювати якусь додаткову послугу чи щось таке? Чи буде вона працювати, якщо вона є мережевою часткою для кількох одночасних користувачів?
Prokurors

1
@Prokurors - Все, що потрібно запустити SQLite, - це файл DLL, відповідний мові, яку ви використовуєте у своїй програмі (C ++, C # тощо). Не потрібні інші послуги чи програми. Крім того, він повинен працювати в мережі з одночасними користувачами. У нас є копія, яка працює і працює на сервері, де я працюю, і це чудово працює. Більше про паралельність ви можете подивитися тут: sqlite.org/lockingv3.html
Майк Вебб

10

Вбудований Firebird може бути хорошим вибором

Вбудована версія - це дивовижна варіація сервера. Це повнофункціональний сервер Firebird, упакований всього в декілька файлів. Розгортати це дуже просто, оскільки немає необхідності встановлювати сервер.

Є кілька дуже хороших драйверів для кращих точок


8

SQL Server Compact, якщо ви хочете використовувати офіційне рішення Microsoft. Це має перевагу в тому, що ви можете використовувати реплікацію з SQL-сервером, якщо вам потрібна така річ.

SQLite, якщо ви хочете зробити щось дуже просте маленьке та безкоштовне. Це те, що Android використовує для своїх внутрішніх баз даних, тому він дуже добре підтримується і є дуже хороші прив’язки .NET.

Однією з чітких переваг SQLite є те, що він є кросплатформним. Тож якби ви хотіли перенести свою програму на Mono.NET, ви не мали б жодних модифікацій для внесення в базу даних.

Мені не подобається MS Access для цього рішення, але багато людей включили його у свою відповідь. Вона обмежена через фірмовий формат та залежність від платформи. Але в цьому є свої переваги. Ви можете легко маніпулювати даними, якщо у вас є копія MS Access, ви можете будувати запити графічно та створювати макроси. Ви можете легко інтегрувати його з рештою MS Office.

З усіх цих SQLite була б моя рекомендація, оскільки він настільки компактний, добре документований і підтримується зростаючою армією колег-розробників незалежно від платформи.

EDIT

Я зрозумів, що є ще один варіант, про який тут усі забули згадати

Поки вам не потрібні реляційні таблиці, ви можете використовувати файл CSV, прочитаний як набір даних через ADO.NET. (Більш приємна пропозиція, ніж будь-що інше, але в деяких випадках підходить і не потребує додаткових бібліотек для розгортання MS.


8

Якщо ви будуєте проект з .NET 4.0.2 або новішою версією і хочете підтримувати вбудовану базу даних, врахуйте SQL Server Express LocalDB .

Це відносно нове доповнення до сімейства Express, яке має менший слід встановлення та зменшені накладні витрати (в порівнянні з іншими виданнями Express), але воно підтримує аспекти програмованості SQL Server. Тобто, на відміну від Compact Edition, LocalDB не вимагає встановлення окремого постачальника ADO.NET для спілкування з SQL.

Детальніше див. У наступному:

SQL Express v LocalDB v SQL Compact Edition (блоги MSDN)
SQL LocalDB проти SQL Server CE (переповнення стека)


7

1
Або спеціально для .NET ви можете подивитися на RavenDB
marc_s

Монго, хоча і прекрасний, не працює вбудованим - вам потрібно запустити окремий серверний процес, який може бути трохи важким для цілей ОП.
Майк Вудхаус

Mongodb не підтримує sql. запитувач хоче "там, де я можу зберігати та отримувати записи за допомогою Sql-запитів". І більше того, mongodb - це голодна пам'ять. Я не рекомендую його для цього випадку використання.
Пітер Лонг

4

Ви можете використовувати Sql Server Express Editionїї як безкоштовну і однаково потужну до тих пір, поки ви не хочете функціонувати, як mirroringтощо. Погляньте на це .


8
У запитанні сказано: "Мені нічого потужного не потрібно". SQL Server Express НЕ є легкою версією SQL Server. Це обмежена версія бази даних та має великий вплив на запуск ПК користувачів під час запуску послуг. Це зайве питання для цього питання. Більше підходить SQL Server Compact.
Moog

2

Я успішно використовував db4o.
На основі файлів, велика спільнота, проста у використанні.

http://www.db4o.com/

Деталі ліцензування

Безкоштовна загальнодоступна ліцензія db4o ліцензується за умовами GPL за замовчуванням.

Ліцензія GPL ідеально підходить, якщо ви плануєте використовувати db4o вдома або плануєте розробляти та розповсюджувати власні похідні роботи як безкоштовне програмне забезпечення також під GPL.

Комерційна ліцензія Комерційна ліцензія потрібна, якщо ви хочете вставити db4o в комерційний продукт, який не є GPL. Комерційні ліцензіати отримують доступ до преміум-послуг та підтримки.


Я використовував db4o протягом 6 місяців у 2012 році. Якщо був би спосіб уникнути проблем із неможливістю доступу до старих даних після зміни об'єктної моделі, я б схвалив цю відповідь. Наскільки я знаю, важко уникнути втрати старих даних, якщо змінити об’єкти. Підсумковий рядок завжди зберігає резервну копію своїх даних в іншому місці в іншому форматі, не db4o (що все одно є досить загальним правилом).
Контанго

2

Альтернатива, про яку не згадувалося, якщо вам не потрібно, щоб вона була безкоштовною базою даних, - VistaDB. Це весь керований код, забезпечує безліч функцій для вбудованої бази даних та пропонує досить хороші показники. Досить хороший міст між SQL CE та SQL Server Express, оскільки більшість ваших збережених процедур VistaDB буде працювати без змін у SQL Server Express. Я був дуже задоволений обслуговуванням клієнтів і в цей момент. Я використовував це на роботі. Немає послуг для запуску. Порожній БД становить близько 1 Мб, і DLL теж досить легкий. Має провайдерів ADO.NET і подібні речі. Мені це сподобалось трохи.

VistaDB


Привіт! Чи працює він у багатокористувацькому сценарії? Наприклад, чи можу я зберігати цю VistaDB на загальнодоступній мережі та отримувати доступ до неї одночасно з кількома користувачами?
Prokurors

1
Це робить деякі обмежені здібності в цьому відношенні. Очевидно, що він не може замінити справжню базу даних, що працює з локальним db-двигуном у цій коробці, але він пропонує кілька варіантів транзакцій. Ми планували використовувати його в такому сценарії, так як здавалося, що він би впорався з цим краще, ніж будь-який із безкоштовних варіантів, з якими ми стикалися, і наші клієнти, швидше за все, не матимуть досвіду для налаштування sql-сервера чи будь-чого іншого. Він пропонує більше функцій, ніж sqlce, але не настільки, як повний сервер sql. Це справжня якість програмного забезпечення.
Ріг

Дякую за інформацію! І їх нова очікувана версія 5 звучить дуже перспективно. Ви спробували Entity Framework з VistaDB? Можливо, навіть створили файл VistaDB спочатку з кодом EF?
Prokurors

1
Я це робив, але це було близько 3-4 років тому. У той момент я виявив, що це працює добре, і це був мій перший досвід EF. Я припускаю, що зараз краще. Єдиним недоліком його в той час були певні сегменти документації були рідкісними, але це було під час переходу після придбання їх тепер власниками.
Ріг

1
PS: Принаймні в той час, коли я ним користувався, вони були більш ніж готові надати демо-ліцензію на використання. Настійно рекомендую спробувати його, перш ніж взяти на себе вартість ліцензії.
Ріг

1

Компактне видання SQL-сервер найкраще, оскільки воно безкоштовне і легке за розміром і добре інтегрується


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.