Какая база данных для небольшого приложения WPF, обеспечивающего скорость поиска и простоту развертывания? - PullRequest
1 голос
/ 09 февраля 2012

У меня есть база данных примерно из 8000 записей. Каждая запись имеет 1 текстовое поле (не более 300 символов) и около 20 числовых полей.

Операции с этой базой данных в основном только для чтения: поиск и сортировка. Без обновлений.

Для моего WPF-приложения , Мне нравится XML, потому что он прост в развертывании, но текстовый поиск несколько медленный, потому что я выполняю поиск по каждому нажатию клавиши, введенному в поле поиска. Мои текущие соображения: XML, Microsoft Access, SQLCE.

Какие (другие) технологии баз данных я должен рассмотреть и что бы вы выбрали для скорости и простоты развертывания? Спасибо.

Ответы [ 4 ]

3 голосов
/ 09 февраля 2012

Одним из преимуществ использования JET является, конечно, все версии Windows, поскольку в Windows 98SE установлена ​​копия. Это означает, что установка механизма данных не требуется.

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

И несмотря на то, что вас часто заставляют проходить через сетевой уровень, вы работаете через журнал транзакций и архитектуру базы данных «ACID» с откатом и т. Д. Так что тонны дополнительной памяти, дополнительной обработки и почти всегда дополнительного уровня файлов Вы "высасываете" данные для транзакций. В целом, эти вещи увеличивают объем памяти, увеличивают объем обработки и мешают работе, когда такие функции не требуются.

Механизм обработки данных на основе файлов, такой как JET, при использовании без сети имеет тенденцию вращаться вокруг огромных серверных версий SQL, MySql и т. Д. На основе транзакций.

Таким образом, ядро ​​базы данных JET все еще не является плохим выбором, поскольку вам не нужно устанавливать его на целевой компьютер. Все остальные предложения здесь требуют проблем с распространением и проблем с установкой.

Итак, некоторые бонусные части:

  • Так что установка не требуется, была установлена ​​на все окна в течение 12+ лет

  • Меньший вес и меньше программных слоев между вашим кодом и данными на диске.

  • Маленький отпечаток стопы памяти

  • Необслуживаемая архитектура и, следовательно, код выполняется «в процессе», и, следовательно, не происходит обмен данными между приложениями для замедления чтения данных (если честно, некоторые из них ActiveX).

  • Вы не обязаны общаться через сетевой сокет.

  • Вы можете использовать некоторые команды индексирования с JET, и доступны некоторые опции, которые даже позволяют обходить с помощью SQL.

  • В вашем модуле разработки вы можете запустить MS-доступ для управления этими таблицами и работы с ними.

2 голосов
/ 09 февраля 2012

Я не очень разбираюсь в скорости, но для простоты развертывания и разработки я рекомендую SQLite + Fluent NHibernate. NHibernate является лучшим ORM для .net сейчас. С Fluent Mappings это позволяет не писать скучные классы отображений, но делать авто-отображение, и это действительно легко настроить.

Что касается базы данных, вы можете выбрать SQLite и SQLCE, и я порекомендую вам первый. С SQLCE мало что получалось, потому что у него плохой предел: строка не должна превышать 4 тыс. Символов ... Еще одно большое преимущество SQLite: он может предоставлять базу данных в памяти, которая действительно полезна для тестирования. Если у вас возникнут вопросы - спрашивайте.

2 голосов
/ 09 февраля 2012

Посмотрите, не заинтересовал ли вас ответ на этот предыдущий вопрос Stack Over: Как работать с SQLite в WPF

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

Единственной проблемой, из-за которой я неохотно предлагал это в качестве ответа, была неопределенность в отношении того, насколько хорошо он будет интегрирован с WPF,Тем не менее, я сделал быстрый поиск в Интернете (для wpf и sqlite) и обнаружил ссылку переполнения стека, которую я включил выше;и многое другоеК сожалению, я не WPF, поэтому не знаю, насколько они будут полезны.

Одна критика, которую я слышал о SQLite, заключается в том, что она не подходит для параллельных многопользовательских операций.Поскольку вы рассматривали SQLCE, возможно, это не будет для вас ограничением.

1 голос
/ 09 февраля 2012

Мой голос был бы немного за SQLCE за JET.Основная причина этого в том, что если вы хотите использовать Entity Framework или LINQ, я не думаю, что это возможно с JET, но это легко с SQLCE.

Если это не проблема для вас, то Альберт сделал некоторыеочень действительные баллы и JET по-прежнему хороший вариант

...