SQL LocalDB против SQL Server CE
У меня небольшой проект, в котором будет 1 пользователь на 1 компьютер. База данных будет довольно маленькой (вероятно, менее 1 МБ данных). Я планирую использовать WPF и Entity Framework для этого проекта.
Я разработал 2 потенциальных решения для баз данных для своего проекта: SQL Server CE и SQL Server Express LocalDB (с SQL Server 2012). Я никогда не работал ни с одним из них, я больше привык работать с полной установкой SQL Server 2008.
Я также хочу, чтобы это было легко установить на клиенте. В идеале я хотел бы просто выбросить кучу файлов в папку (вместе с моим.exe файлом).
Так кто-нибудь здесь мог бы предложить мне лучшую технологию для использования?
Спасибо!
6 ответов
См. Презентацию Представление SQL Server Express Local DB для локальных систем - дает отличный обзор.
Огромным преимуществом LocalDB является то, что это настоящий SQL Server - это специальная версия SQL Server Express, но в основном он поддерживает все, что имеет "настоящий" SQL Server - пространственные типы данных, хранимые процедуры - вы называете это.
SQL Server Compact Edition, с другой стороны, является сильно урезанной версией - многие функции и типы данных не поддерживаются. Это меньше и более "проворный" - но ему не хватает много удара.
Лично я бы выбрал SQL Server Express со средой выполнения LocalDB поверх SQL Server CE 4 - если только вам не нужен крошечный размер SQL Server CE (например, на мобильном устройстве).
Также посмотрите сравнение между SQL Server CE 3.5, CE 4.0, SQL Server Express 2008 R2 и SQL Server 2012 Express LocalDB на отличном веб-сайте ErikEJ " Все, что SQL Server Compact".
Это зависит, но в зависимости от ваших требований (т. Е. Очень небольшого объема данных и установки XCopy), ваш единственный вариант - SQL Server Compact, поскольку занимаемая площадь SQL Compact на диске составляет около 18 МБ против 160 МБ с LocalDB, а LocalDB требует установка администратора (поставляется только как MSI) - но если совместимость с SQL Server важнее, LocalDB - лучший выбор (как отмечает marc_s)
Забывая все расплывчатые ответы "легче", "меньше", "не хватает удара" или "легче" (без обид), я думаю, что нужно сосредоточиться на главном различии между ними при выборе:
- LocalDB вне процесса.
- CE находится в процессе.
Запуск как часть процесса подачи заявки или нет, имеет много последствий, которые, вероятно, следует изучить в отдельных вопросах.
Однако наиболее очевидным является то, что если вам нужен доступ к базе данных из нескольких приложений с использованием внутрипроцессной СУБД (например, CE), все приложения будут обращаться к файлу базы данных напрямую, используя свое собственное время процессора. Синхронизировать их действительно сложно, и понимание этого помогает понять, почему у CE меньше функций (и многих других).
Также обратите внимание, что хотя можно опасаться, что несколько процессов, выполняющих один и тот же код CE, могут занимать больше памяти, чем необходимо, помните, что операционная система достаточно умна, чтобы делиться страницами из своего кэша страниц между несколькими процессами, поэтому один из них на самом деле не является проблемой.,
LocalDb - это просто способ автоматического управления обычным экземпляром Express для каждого пользователя (он не отличается от SQL Server Express, это одно и то же).
Я действительно собираюсь пойти с ErikEJ здесь. У меня нет репутации, чтобы голосовать за его ответ, но, учитывая вашу запрошенную цель, SQL CE действительно быстрее и быстрее. Многие проблемы сравнения, приведенные ссылкой, предоставленной marc_s на "отсутствующие функции" SQL CE в VS LocalDB, устраняются благодаря использованию EntityFramework (процедурный T-SQL не поддерживается, но если вы используете EF, Lambda и LINQ, это не будет действительно будет проблемой).
Посмотрите эту страницу, чтобы узнать, почему был создан LocalDB
Он был создан специально для разработчиков. Он прост в установке, не требует управления, но совместим с другими выпусками SQL Server на уровне API. В этом отношении он похож на облегченную версию бесплатной версии SQL Server Express.
Хотя это похоже на SQL Server Compact, есть различия:
- Режим выполнения: SQL Server Compact - это встроенная DLL, а LocalDB работает как отдельный процесс.
- Использование диска: все двоичные файлы SQL Server Compact занимают около 4 МБ, а установка LocalDB занимает 140 МБ.
- Особенности: SQL Server Compact предлагает основные функции СУБД, такие как запросы, в то время как LocalDB предоставляет гораздо более богатый набор функций, включая хранимые процедуры, типы данных Geometry и Geography и т. Д.
На мой взгляд, LocalDB часто используется для автономной разработки, чтобы гарантировать, что разрабатываемый вами код на 100% совместим с вашей производственной базой данных SQL Server.
Кроме того, если важно скрыть вашу интеллектуальную собственность / схему / данные от легкого доступа пользователей, SQL CE может быть защищен паролем / зашифрован. База данных SQL Local может быть легко открыта из студии управления.