C # Мінімальна база даних SQL


12

Я працюю над невеликим проектом (не виробництвом), де мені потрібно зберігати достатньо даних, щоб щось на зразок CSV було неефективним для обробки, а сервер SQL / MySQL був би занадто багато. Чи має .Net будь-який спосіб ефективно зберігати кілька записів даних із можливістю запиту без необхідності керування та підключення до сервера, а не завантаження та обробка одного файлу.


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

@Brad це лише особистий проект, і в даний час я не запускаю жодного сервера баз даних у себе вдома. Ваша пропозиція доступу, можливо, саме те, що я шукаю.
Девід

4
Я не прихильник доступу , але інколи надаваю це правильне рішення. Чи розглядали ви об’єктну серіалізацію ? Просто створіть об’єкт і запишіть його у файл. (Об'єктом може бути а List<foo>)
Ден Пішельман

Ви хочете, щоб вони зберігалися чи їм потрібно лише запам'ятовувати?
Річард

1
@David: 4000 записів - так мало? Чому б не зберегти їх у пам’яті? Якщо вам просто потрібна база даних в пам'яті, щоб здійснити деякі запити, без будь-яких адміністративних інструментів, набір даних з деякою таблицею даних (зберігається у файлі) може бути достатньо для ваших потреб.
Док Браун

Відповіді:


15

Є кілька альтернатив, не в конкретному порядку:

  1. Усі версії (платної?) Візуальної студії поставляються із встановленим SQL Server Express . Ви можете використовувати це.
  2. (Ugh) XML-файли
  3. SQL Server CE (в основному, локальний SQL через файл)
  4. SQLite

Більше ідей тут: /programming/3639846/what-is-a-good-embedded-database-to-use-with-c


Мені дуже хочеться чогось, що повністю міститься в одному виконаному файлі, без DLL-файлів та програмного забезпечення сторонніх виробників. Чи може будь-який із перерахованих вище, крім XML, відповідати цим потребам?
Девід

Ви можете вбудувати dll у свій виконуваний файл, можливо.
Sklivvz

Я гадаю, найважливіша частина - це не сторонні послуги *, такі як MSSQL / MySQL, які підходили б №3 або №4
Девід

Я не пам'ятаю, чи є у SQL CE окремий час виконання чи ні. SQLite не робить, але створити проект .NET може бути дуже складно.
GalacticCowboy

3
Я додам, що LocalDB - це варіант. Дивіться цю відповідь: stackoverflow.com/questions/9655362/…
Енді

4

На додаток до запропонованих варіантів Sklivvz , не бійтеся виходити за межі сфери SQL і використовувати вбудований об'єктно-орієнтований двигун бази даних, такий як Sterling або DB4O .

Вони пропонують переваги в тому, що вони невеликі та на основі файлів, вбудовуються у вашу програму, але також дуже швидко та легко програмуватися.


3

SQLite був би найкращим варіантом.
Як написано на їхньому сайті:

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

Здається, справді те, що ви шукаєте!

Існує навіть пакет Chocolatey, якщо ви лінуєтеся завантажити і встановити його самостійно!


2

ADO.NET може серіалізуватися до XML і має майже всі функціональні можливості RDBMS. (Ну, дешеві, все одно.)

Я знаю, що це "Старий", і зараз дивився на нього, але ADO.NET дуже добре працює саме на те, що ви описуєте. Це навіть робить досить пристойну роботу по відстеженню неприйнятих змін.

Це може бути "Старий", але це, звичайно, не "Завалений". Однак у нього досить важкий слід пам’яті, тому ваш дзвінок про це. 4000 записів не буде проблемою.


Ви могли б детальніше зупинитися на "важкому сліді пам'яті"?
Девід

@David - Це означає, що весь набір даних зберігатиметься в пам'яті, а не тільки в записах, які ви повертаєте з запиту. Якщо б у вас була база даних у 4 мільйони записів, утримання цього всього в наборі даних ADO.NET було б серйозним притягненням до ресурсів, тоді як "Real" RDBMS зберігав би його на диску, поки ви не запитаєте їх підмножину. 4000 записів - це невеликий чхання у використанні пам’яті, тому я б не переживав про це.
Веслі Лонг

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