SQL Server Compact - это компактная версия известной СУБД от Microsoft, оптимизированная для использования в мобильных и встраиваемых приложениях. Благодаря маленькому размеру и встроенной работе, SQL Server Compact позволяет с легкостью добавлять полноценные SQL возможности в приложения с ограниченными ресурсами.
История создания и особенности SQL Server Compact
Изначально эта СУБД называлась SQL Server Everywhere и была выпущена компанией Microsoft 11 января 2007 года. Позже название было изменено на более короткое и запоминающееся SQL Server Compact.
SQL Server Compact основан на том же коде что и SQL Server Mobile. База данных хранится в едином файле формата .sdf, максимальный размер которого составляет 4 Гб.
В отличие от SQL Server Express, который работает как отдельный сервис, SQL Server Compact выполняется в памяти вызывающего процесса. Это позволяет ему экономить ресурсы компьютера.
Изначально использование SQL Server Compact на веб-серверах не поддерживалось, однако позже появилась возможность обойти это ограничение, хотя и не рекомендуется из-за потенциальных проблем с производительностью.
Важной особенностью SQL Server Compact является поддержка популярных технологий доступа к данным:
- ADO.NET провайдеры
- Language Integrated Query (LINQ)
- Entity Framework
Это облегчает работу с данными из кода приложений.
Сценарии использования
Благодаря своим компактным размерам и гибкости развертывания, SQL Server Compact подходит для следующих сценариев:
- Мобильные и встраиваемые устройства
- Настольные приложения, не требующие выделенного сервера
- Хранение данных для веб-приложений (с некоторыми ограничениями)
- Тестирование и разработка приложений
Рассмотрим конкретный пример использования SQL Server Compact в настольном приложении Windows Forms на языке C# в среде Visual Studio.
- Создаем новый проект и выбираем шаблон Windows Forms Application
- Добавляем локальную базу данных через меню Project - Add Component - Local Database
- Получаем файл Database1.sdf рядом с проектом, это и есть наша база
- Создаем в этой базе таблицу Products через Server Explorer
Id int Name nvarchar(50) Price decimal - С помощью Entity Framework генерируем модель и классы для доступа к данным
- В форме отображаем данные с помощью data binding и реализуем CRUD операции.
Таким образом, мы получаем полноценное desktop-приложение с функциями СУБД без необходимости разворачивать отдельный SQL Server.
Синхронизация данных
Зачастую возникает необходимость синхронизировать данные между SQL Server Compact и полноценным SQL Server. Для этого в платформе Microsoft есть отдельный компонент - SQL Server Sync Framework.
Он позволяет настроить одно- или двухстороннюю синхронизацию данных, указав правила разрешения конфликтов при обновлении одних и тех же данных на разных концах.
Рассмотрим пример настройки синхронизации:
- Устанавливаем Sync Framework и создаем базы данных на сервере и клиенте
- Настраиваем публикацию и подписку для синхронизации
- Запускаем синхронизацию и в случае конфликтов выбираем нужную стратегию разрешения
Таким образом данные из SQL Server Compact всегда можно синхронизировать с полноценным SQL Server.
Достоинства и недостатки
Как и любое программное решение, SQL Server Compact имеет свои достоинства и недостатки. Рассмотрим их подробнее.
Достоинства:
- Маленький размер базы данных и требования к ресурсам компьютера
- Простота развертывания вместе с приложениями
- Поддержка стандартных API доступа к данным как ADO.NET и LINQ
- Возможность синхронизации данных с полноценным SQL Server
Недостатки:
- Ограничение максимального размера базы данных в 4 Гб
- Отсутствие полноценной поддержки одновременной работы многих пользователей
- Поддержка только одного файла базы данных .sdf
Будущее SQL Server Compact
Несмотря на популярность у разработчиков, в феврале 2013 года корпорация Microsoft приняла решение о прекращении разработки и поддержки SQL Server Compact Edition.
Это означает, что с 2021 года этот продукт официально считается устаревшим и не рекомендуется к использованию в новых проектах.
Альтернативы SQL Server Compact
Взамен SQL Server Compact корпорация Microsoft рекомендует использовать следующие решения:
- SQL Server LocalDB
- Azure SQL Edge
Эти встраиваемые СУБД сохраняют основные преимущества SQL Server Compact, но не имеют некоторых ограничений.
Миграция на новую платформу
Для перехода приложений с SQL Server Compact на альтернативную СУБД потребуется:
- Экспорт данных в скрипты SQL
- Создание новой базы и импорт данных
- Изменение строк подключения к базе данных в коде
При грамотном подходе процесс миграции можно реализовать с минимальными затратами.
Поддержка SQL Server Compact сторонними разработчиками
Несмотря на прекращение официальной поддержки со стороны Microsoft, SQL Server Compact edition может поддерживаться сторонними разработчиками.
Например, существуют утилиты восстановления данных, которые умеют извлекать информацию из поврежденных баз данных .sdf формата.
Также возможна реализация дополнительных возможностей поверх имеющегося API для расширения функционала этой компактной СУБД.
Перспективы развития
Хотя разработка самой SQL Server Compact прекращена, но концепция встраиваемых баз данных активно развивается в отрасли.
Появляются современные решения вроде Azure SQL Edge, оптимизированные под новые тренды типа Интернета вещей и Edge-вычислений.
Можно предположить, что в будущем функциональность и производительность встраиваемых СУБД будет только расти, что позволит создавать еще более сложные приложения.