2009-10-16 3 views
9

Я делаю эту крошечную утилиту (Windows Forms), и ей нужно будет сохранить немного данных на диск. В терминах БД это будет примерно одна таблица, не более, чем около нескольких тысяч строк, каждая строка которых меньше 1 КБ.Какие существуют опции для быстрой встроенной базы данных в .NET?

Что вы бы описали?

Добавлено: Забыл сказать - это было бы очень аккуратно, если бы вся программа была бы только одним .EXE-файлом (плюс файл данных, конечно). Поэтому я бы предпочел что-то, что встроено в .NET.

ответ

23

SQLite. Маленький и имеет great wrapper для .Net.

+0

+1. Я не знал об обертке для .NET. Очень круто. –

+1

И порт .NET http://code.google.com/p/csharp-sqlite/ – mcintyre321

+0

Так же, как дополнительная оговорка для оболочки SQLite, она поддерживает LINQ. –

8

Вы можете использовать SQL Server Compact Edition (поставляется с Visual Studio) или SQLite.

Есть много других, но они являются наиболее распространенными.

Я большой поклонник SQLite, потому что он крошечный, простой и быстрый. Для него есть замечательный ADO.NET provider, который поддерживает Entity Framework.

3

Если вы настроены на использование встроенной базы данных, то SQL Server Compact Edition, вероятно, будет лучшим выбором, за которым следует SQLite как вторая секунда.

Если вы говорите на одной таблице, это звучит так, как встроенная БД может быть чрезмерной, и вам может быть лучше подан простой текстовый файл.

2

Я второй голос за SQLite. SQL Server CE слишком тяжел для любых вложенных целей, если вам не нужна простая синхронизация с центральной базой данных - тогда это фантастика.

4

Если вы говорите о одной таблице, я не могу понять, почему вы чувствуете, что хотите использовать реляционную базу данных для достижения своих целей. Как насчет одного файла?

Естественно, в зависимости от причины, по которой вам необходимо хранить информацию, и как связаны данные, может возникнуть причина, по которой вам понадобится db. Но вы должны подумать, действительно ли БД на самом деле то, что вам нужно в этом случае.

Реляционная база данных не должна быть стандартом дефакто для хранения данных. Перед выбором РСУБД существует множество альтернатив.

См. Сообщение mcintyre321, например.

+0

Забавно, как люди видят слово «БД», и сразу же они заперты в мышлении в СУБД. Я сказал где-нибудь, что хотел получить полную СУБД? Действительно, я больше думал о плоских решениях, сериализации XML и т. П. Я просто задавался вопросом, что будут делать другие люди и почему или почему бы им не выбрать некоторые решения. +1 –

+0

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

+0

Это будет граница с бытием и встроенной СУБД. Плоские файлы являются плоскими, потому что у них нет индексов. ИМХО. –

1

Для чего-то маленького и простого, я бы, вероятно, пошел с XML и не использовал базу данных. Если вы отрисуете код CRUD, вы можете впоследствии модифицировать часть уровня данных кода, чтобы он использовал базу данных, когда данные растут по размеру и сложности.

0

Если это не должна быть база данных, совместимая с SQL, я бы также посмотрел на Db4o. Db4o - это объектная база данных для Java и .NET. Версия .NET полностью написана на C#.

3

Вы можете создать массив своего класса, пометить его [Serializable] и просто использовать встроенные методы сериализации/десериализации для сохранения.

1

Как только я исследовал ту же проблему. Из всех возможных кандидатов два выглядели хорошо. Это SQLite и Firebird (firebirdsql.org). Но у Firebird было больше возможностей, чем у SQLite.

UPD: Вот интересная информация о Жар + DotNet http://www.firebirdsql.org/dotnetfirebird/embedded/index.html

+0

+1 для обозначения альтернативы SQLite – tobsen

0

Я второй SQL Lite или простой XML-файл с выкачать писателем, чтобы минимизировать размер. Быстро и не так грязно.

1

Berkeley DB также является хорошим выбором для встроенной базы данных. И есть library, который предоставляет для него интерфейс .NET 2.0.

0

Попробуйте следующее: https://github.com/mdsoftware/mData. Никаких третьих сторон, включая все источники, также были включены некоторые интересные вещи, такие как Lisp-подобная обработка данных и компилятор выражения. Я попытался сделать что-то действительно простое, но функциональное.