2008-08-03 2 views
29

Я был (и до сих пор) искал встроенную базу данных, которая будет использоваться в приложении .net (C#). Предостережение: приложение (или, по крайней мере, база данных) хранится на сетевом диске, но используется только одним пользователем за раз.Встроенная база данных для .net, которая может запускаться из сети

Теперь, моя первая идея была SQL Server Compact edition. Это действительно прекрасно интегрировано, но оно не может бежать из сети.

Firebird похоже, имеет такую ​​же проблему, но интеграция .net кажется не совсем первоклассной и в значительной степени недокументирована.

Blackfish SQL выглядит интересно, но нет пробной версии .net. Ценообразование также в порядке.

Любые другие предложения о том, что хорошо работает с .net и убегает от сети без необходимости установки серверного программного обеспечения?

+0

Интересно, что этот пост не считается «мнение, основанное» в отличие от моего поста http://stackoverflow.com/questions/20229964/multi-user-application-without -need в установке-нибудь встраиваемый-база-то. В любом случае, я думаю, что все предлагаемые встроенные базы данных работают для одного пользователя на сервере (включая SQL CE), некоторые из них допускают параллельные чтения (например, SQLite), но только один (по крайней мере, единственный, который я нашел и проверил, что он РАБОТАЕТ !), который позволяет одновременную запись VistaDB – Prokurors 2013-12-15 12:53:22

ответ

21

SQLite пришла мне в голову при чтении ваш вопрос, и я совершенно уверен, что это возможно, чтобы получить доступ к нему с сетевого диска если вы держите себя в ограничении 1 пользователя в то время.

SQLite on .NET - Get up and running in 3 minutes

+0

Я тестировал его в течение последних недель, а SQLite - отличный продукт. Конечно, это не полноценная RDBMS, но у нее есть все функции, необходимые для выполнения работы. – 2008-10-18 15:05:20

+0

@Sven: SQLite фактически имеет довольно полную блокировку файлов, и SQLite-база данных может быть доступна только нескольким пользователям за один раз. В файловых системах, которые его поддерживают, SQLite будет использовать байтовый диапазон вместо блокировки целых файлов, чтобы повысить производительность нескольких одновременных использования одной и той же базы данных. Это не доступ; это довольно здорово. – 2008-08-10 09:08:09

+0

@ChrisHanson Он допускает доступ только для чтения для нескольких пользователей одновременно – Prokurors 2013-12-15 12:46:47

6

Заканчивать VistaDB. У них очень хороший продукт, версия сервера (3.4) находится в бета-версии и очень близка к выпуску.

4

Почему бы не использовать SQL Server 2005 Express edition?

Это действительно зависит от того, что вы подразумеваете под «встроенным», но вы можете перераспределить SQLServer2005E с вашими приложениями, и пользователь никогда не должен знать, что он есть.

Embedding SQL Server Express in Applications

Embedding SQL Server Express into Custom Applications

+0

@CodingTheWheel: потому что ему нужна установка на сервере, и пользователь заметит сервис, работающий в фоновом режиме, самый последний, когда тревожные звонки каждого сетевого средства безопасности идут выкл. Embedded означает, что это часть приложения или отдельная.dll, но он не требует какой-либо установки, не пытается делать что-то в реестре и не оставляет никаких файлов при удалении, кроме базы данных. SQL Server Express не встроен, Microsoft использует «встраивание» в качестве «Упаковка с вашим приложением, но все еще являющаяся отдельной вещью с зависимостями». Есть много u – 2008-08-03 16:06:09

8

Это звучит как ADO/Access идеально подходит для ваших нужд. Он запекается в стек MS, хорошо приправленный и многопользовательский.

Вы можете создать программно БД так:

Dim catalog as New ADOX.Catalog 
Catalog.Create("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\\server\path\to\db.mdb") 

Вы можете использовать стандартные методы ADO.NET для взаимодействия с базой данных.

8

Вы можете использовать встроенную firebird, это просто dll, который вам понадобится для отправки с вашим приложением.

О том, что недокументировано, это не так, драйвер Firebird .NET реализует интерфейсы ADO, поэтому, если вы знаете ADO, вы можете работать с Firebird, в основном вместо SQLConnection вы будете использовать FBConnection и так далее, но мой совет это написать слой доступа к данным и использовать только интерфейсы на вашем коде, что-то вроде этого:

using FirebirdSql.Data.FirebirdClient; 

public static IDbConnection MyConnection() 
{ 
    FbConnection cn = new FbConnection("..."); 
    return cn; 
} 

Этот пример очень прост, но вам не нужно будет гораздо больше, чем это.

Мы используем firebird для нашего приложения без проблем, вы должны хотя бы попробовать его.

2

Существует также Valentina.Я работал над этим продуктом, когда работал над проектом Real Basic. Версия RB очень хорошая.

10

Я бы рекомендовал Advantage Database Server (www.advantagedatabase.com). Это зрелая встроенная БД с большой поддержкой и доступная со многих языков разработки в дополнение к .NET. «Локальная» версия бесплатна, работает внутри вашего приложения в виде DLL, не требует установки на общий ресурс сервера/сети и поддерживает все основные функции БД. Вы можете хранить файлы БД и/или приложения в сети; ему все равно, где находятся данные.

Отказ от ответственности: Я инженер в группе ADS R & D. Я обещаю, это скалы :)

7

Немного опоздал на сообщение здесь .. И VistaDB уже упоминалось, но я хотел указать, что VistaDB на 100% управляется (поскольку ваш пост отмечен .net). Он может запускаться с общего сетевого диска и развертывается 1MB xcopy.

Поскольку вы упоминаете SQL CE, мы также поддерживаем синтаксис и типы данных T-SQL (на самом деле больше, чем SQL CE) и имеют обновляемые представления, TSQL Procs и другие вещи, отсутствующие в SQL CE.

4

Я озадачен.

Вы запрашиваете встроенную базу данных, где сама база данных хранится на сервере. что переводит на сохранение файла данных на сетевом ресурсе. После этого вы говорите, что SQL Compact Edition не будет работать ... за исключением того, что если смотреть на этом документе:

Документ Word:
Choosing Between SQL Server 2005 Compact Edition and SQL Server 2005 Express Edition

На странице 8 у вас есть хорошая большая зеленая галочка рядом с " Хранилище файлов данных на сетевом ресурсе ".

Так что мне кажется, что ваша первая мысль была правильной.

2

Считаете ли вы OODB? Из различных открытых источников альтернативы я рекомендую db4o (извините за саморекламу :)), которая может запускаться либо встраиваемом, либо в режиме клиент/сервер.

Лучшие

Адриано