Что такое хороший выбор базы данных для небольшого приложения .NET? [закрыто]


180

Я разрабатываю небольшое приложение на C # в .NET и хочу иметь небольшую легкую базу данных, которая не использует много ресурсов.

Не могли бы вы перечислить некоторые из наиболее известных программ для облегченного баз данных .


Ответы:


192

14/06/2016 Да ... все еще получаю голоса: - /


17/03/2014 Я все еще получаю голоса за это, помните дату, на которую изначально был дан ответ. Хотя основные три перечисленных пункта все еще полностью жизнеспособны, список будет стремиться стать устаревшим. Существуют и другие доступные технологии баз данных, которых нет в списке.


У вас есть несколько сразу узнаваемых и бесплатных опций:

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

http://sqlite.phxsoftware.com/

Все три используют SQL, хотя, вероятно, с некоторыми ограничениями / причудами. Management Studio работает с Compact и LocalDB, тогда как для SQLite вам понадобится еще один инструмент пользовательского интерфейса, такой как SQLite Administrator:

http://sqliteadmin.orbmu2k.de/

Есть альтернативы NoSQL, такие как:

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

Я использую Sterling для программирования Windows Phone, так как он создан для использования изолированного хранилища. Я видел только статьи о RavenDb, но могу вам сказать, что это среда хранения документов на основе JSON.

Чтобы не путать ситуацию (используйте SQLite, SQL Server Express LocalDB или SQL Server Compact Edition), но есть и другие встроенные / локальные базы данных, некоторые реляционные, другие объектно-ориентированные:

Не все из них бесплатны. Поддержка SQL / LINQ / in-proc различна для всех. Этот список только для любопытства.

Теперь есть и Karvonite , однако ссылка на галерею кодов не работает. Когда он снова появится в живых, я разберусь с этим для разработки WP7.


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

2
RavenDB действительно является базой данных документов, но его API гораздо более мощный, чем простые пары имя и значение. Проблема в том, что это не бесплатно для коммерческих проектов, если вы искали бесплатные альтернативы.
ДжКаллико

@JCallico Признаюсь, я немного обобщил резюме, но сомневаюсь, что кто-нибудь примет то, что я сказал, как Евангелие.
Адам Хоулдсворт

@ Брендан Лонг, не существует реализации SQL, которую можно сказать на 100% стандартом.
Поп Каталин

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

58

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

Это маленький и компактный. Для этого требуется, чтобы DLL находилась в каталоге приложения, но вам не нужно устанавливать другое программное обеспечение, такое как Access или SQL Server. Кроме того, как указывает danielkza ниже, «SQLite является общественным достоянием, поэтому вам не нужно беспокоиться о лицензировании». Это действительно может иметь большое значение.

Вы можете использовать System.Data.SQLite или csharp-sqlite для доступа к нему в приложении C #, используя те же методы, что и в SQL или OleDB.

Вам также понадобится приложение для редактирования / управления базой данных. Лучшим, на мой взгляд, является SQLite Studio . Вот еще пара:
SQLite Admin
SQLite 2009 Pro (внизу страницы)
Обновление - 25.07.11 - Дополнительные приложения SQLite (вопрос здесь на SO)

Подробнее о SQLite:
SQLite в Википедии
Компании, которые используют SQLite

Пользовательские функции. Кроме того, если вы просматриваете основные функции SQLite и не видите того, что вам нравится, вы можете создавать свои собственные пользовательские функции. Вот пара примеров:
Из примера SO
Anoter


8
Одно дополнение: SQLite является общественным достоянием, поэтому вам не нужно беспокоиться о лицензировании.
Даниэлькза

@MikeWebb Будет ли Sqlite работать с приложениями ClickOnce без необходимости устанавливать какие-либо дополнительные службы или что-то еще? Будет ли это работать, если он находится в общей сетевой папке для нескольких одновременных пользователей?
Прокурорс

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 я бы посоветовал, поскольку он настолько компактен, хорошо документирован и поддерживается растущей армией коллег-разработчиков, независимо от платформы.

РЕДАКТИРОВАТЬ

Я понял, что есть еще один вариант, который все здесь забыли упомянуть

Пока вам не нужны реляционные таблицы, вы можете использовать CSV-файл для чтения в качестве набора данных через ADO.NET. (Больше предложение lulz, чем что-либо другое, но в некоторых случаях подойдет и не требует дополнительных библиотек для развертывания 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

как насчет http://en.wikipedia.org/wiki/NoSQL_(RDBMS) ?

в частности MongoDB для .Net

http://www.mongodb.org/display/DOCS/Home


1
Или специально для .NET вы можете захотеть взглянуть на RavenDB
marc_s

Mongo, хотя и хорош, но не работает встраиваемым - вам нужно запустить отдельный серверный процесс, который может быть немного тяжелым для целей OP.
Майк Вудхаус

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 в общей сетевой папке и получить к ней доступ одновременно от нескольких пользователей?
Прокурорс

1
Это делает некоторые ограниченные способности в этом отношении. Очевидно, что он не может заменить настоящую базу данных, работающую с локальным механизмом БД на этом блоке, но он предлагает несколько транзакционных опций. Мы планировали использовать его в этом сценарии, так как казалось, что он справится с этим лучше, чем любая из бесплатных опций, с которыми мы столкнулись, и наши клиенты вряд ли будут иметь опыт настройки сервера sql или чего-либо еще. Он предлагает больше возможностей, чем sqlce, но не так много, как полноценный сервер sql. Это действительно качественное программное обеспечение.
Рог

Спасибо за информацию! И их новая ожидаемая версия 5 звучит очень многообещающе. Вы пробовали Entity Framework с VistaDB? Может быть, даже сначала создал файл VistaDB с кодом EF?
Прокурорс

1
Я сделал, но это было около 3-4 лет назад. В тот момент я обнаружил, что это хорошо работает, и это был мой первый опыт EF. Я предполагаю, что теперь лучше. Единственным недостатком, который у нее был в то время, было то, что некоторые сегменты документации были редкими, но это было во время перехода после того, как они были приобретены их нынешними владельцами.
Рог

1
PS: По крайней мере, в то время, когда я использовал его, они были более чем готовы предоставить демонстрационную лицензию для использования. Я настоятельно рекомендую вам попробовать его перед тем, как платить за лицензию.
Рог

1

SQL Server Compact Edition лучше, так как он бесплатный и легкий по размеру и хорошо интегрируется


Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.