Тест вбудованих бд

На відміну від клієнт-серверних СУБД, Embedded (найбільш адекватний, хоча і не цілком точний російський переклад - «вбудовуються») СУБД не уявляють собою незалежний процес, з яким взаємодіє програма, а є складовою програми і повністю або частково інтегруються в неї.

Перелік завдань, що вирішуються клієнт-серверними СУБД, добре відомий. В принципі, Embedded databases використовуються для зовсім іншого класу задач. Як правило, це однопользовательские настільні додатки, які можуть бути затребувані в самих різних сферах. І якщо оцінка характеристик клієнт-серверних СУБД досить добре формалізована, з вбудованими БД справа дещо складніша. Існує кілька Benchmark'ов, що дозволяють оцінити швидкість роботи бази в різних режимах, але єдиного стандарту (подібного TPC) для розподілених БД немає.

Оцінювати якість Embedded databases можна за різними ознаками. Інструментарій бази даних повинен бути компактним, високопродуктивним і не вимагає великих витрат на супровід. Тільки в цьому випадку він буде вирішувати покладені на нього завдання. Крім цього, при виборі СУБД для власних потреб необхідно враховувати те, які кошти розробки підтримує оцінюваний продукт. Існує ряд БД, що працюють, скажімо, тільки з Delphi або мають SDK для C ++. Одним з важливих критеріїв є так званий footprint - обсяг споживаного дискового простору або пам'яті, необхідної СУБД для роботи. І, звичайно ж, важливі швидкість виконання запитів різного роду,
можливості мови маніпуляції даними, підтримуваного БД, зручні налаштування і керованість самою базою.

На сьогоднішній день розробники прикладного програмного забезпечення мають досить широкий простір для вибору БД. Але незважаючи на те що існують такі потужні продукти як Oracle, MS SQL, Interbase, регулярно з'являються і нові СУБД. Конкуренцію «грандам» в корпоративному секторі скласти вельми складно. Але чи завжди розумно використовувати «важкі» і дорогі рішення? Природно, що для створення настільних додатків це не розумно, особливо, якщо бюджет проекту обмежений. З іншого боку, більш прості СУБД не завжди мають у своєму розпорядженні тим набором функцій, який необхідний в кожному конкретному випадку. Найчастіше вбудовуються СУБД орієнтуються або на рішення вузького спектра специфічних
задач, або створюються спеціально для використання в конкретному кінцевому продукті або роботи з одним засобом розробки.

Багато Embedded СУБД також є платними, хоча і коштують значно дешевше, ніж серверні платформи. Ключовим фактором у ціноутворенні можуть стати не тільки якісні характеристики продукту, що просувається, але і додаткові можливості, що надаються кінцевому користувачеві. Наприклад, графічне середовище моделювання структури даних, візуальні конструктори запитів і т.д. Взагалі, грамотне проектування БД і її адміністрування вважається досить трудомісткою і високооплачуваною роботою, що вимагає високої кваліфікації. Природно, творці прикладних програм прагнуть здешевити розробку. У тому числі і за рахунок використання додаткових можливостей СУБД.

У своєму огляді я вирішив розглянути ті Embedded DB. які підтримують .Net. Причин тому кілька. По-перше, дана технологія стрімко набирає популярність і надає дійсно зручні механізми роботи з базами даних. По-друге. Net-розробники не прив'язані до мови програмування (щонайменше, теоретично). Деякі з потрапили в огляд СУБД я використовував раніше, деякі просто знайшов в Google.

Особисто для мене представляло інтерес перш за все те, наскільки СУБД втрачає продуктивність при роботі з великими обсягами даних. Тому число записів, з якими буде працювати база в ході тестування, може встановлюватися довільно. При цьому виконуються основні операції: вставка, вибір і видалення записів. Записи генеруються псевдовипадковим чином, відповідно до правил, описаними в стандарті TPCC (код був взято з прикладів все тієї ж VistaDB).

Тест я здійснював на ноутбуці SAMSUNG R40 (NP-R40K00E) (intel Celeron M440 1.86GHz; DDR2 1024MB (512Mbx2); HDD 100Gb 5400).

Тільки одна з потрапили в огляд СУБД - з відкритим вихідним кодом. Власне, SQLite не є повністю орієнтованої на .Net.

Документація, представлена ​​на сайті, також має вельми хаотичний вигляд. Довелося розбиратися самостійно. Ті ж проблеми стосуються і менеджера, точніше, менеджерів БД. Однак витративши чимало часу на організаційні питання і реалізувавши пару тестів, я прийшов до висновку, що сам продукт досить непоганий. Про це свідчать хоча б результати тесту.

Мені так і не вдалося здійснити передачу параметрів об'єкту SQLiteCommand. Порахувавши недоцільним витрачати час на вирішення цієї проблеми, я просто динамічно сформував рядок запиту. Підтримуваний діалект SQL, на мій погляд, трохи примітивний. По можливостях його можна порівняти, мабуть, з MySQL.

Всі таблиці зберігаються в єдиному файлі. Таким чином, для перенесення програми на іншу машину потрібно додати (або ж створити в коді програми) файл бази (<имя базы>.db), а також 3 бібліотеки dll - SQLite.dll, SQLite3.dll і SQLite.Net.dll.

Відкритий вихідний код (в цьому його незаперечна перевага) і безумовна популярність продукту припускають можливість портування БД на будь-яку .Net-сумісну платформу - в тому числі Compact Framework і Mono. Та й без .Net сама СУБД працює практично скрізь.

Основною областю застосування SQLite можуть стати невеликі портіруемость додатки, в яких підвищені вимоги пред'являються до продуктивності, але не передбачається потужна бізнес-логіка. Також, ймовірно, дуже зручно використовувати цю СУБД для Web-розробок. Якщо ви зупините свій вибір саме на цій СУБД, то приготуйтеся до будь-яких проблем, крім проблеми продуктивності.

Потрапивши на головну сторінку офіційного сайту цього продукту, я відразу ж зрозумів, що VistaDB - повна протилежність попередньої СУБД. Відмінно структурована інформація для користувача, прекрасна документація і велика кількість прикладів видають комерційний продукт.

Цікавим моментом є те, що VistaDB. по завіреннях розробників, повністю сумісна з Compact Framework і Mono. Велика кількість сторонніх продуктів, призначених для адміністрування, і навіть безкоштовно розповсюджується Повноформатна книга, свідчить про популярність продукту.

Зручним мені здалося те, що процес установки програмного продукту повністю автоматизований. По завершенні процедури інсталяції користувач отримує все необхідне для початку роботи. Інтеграція з Visual Studio відбувається автоматично. Ще одним позитивним моментом є наявність детальної і добре оформленої документації. У комплект VistaDB. крім самої СУБД і провайдерів доступу, включена велика кількість прикладів і кілька корисних утиліт. Перш за все, це Data Builder, що дозволяє легко управляти об'єктами бази даних. Також є майстри міграції даних з інших СУБД. Крім .Net-провайдера, доступ до VistaDB можна здійснювати через COM-об'єкти, ODBC-драйвера і
за допомогою компонентів доступу VCL.

Підтримує чотири види об'єктів:

  • Таблиці (tables);
  • Уявлення (view);
  • Збережені процедури (stored procedures);
  • Функції (functions).

При створенні таблиць з використанням менеджера я звернув увагу на не зовсім коректну роботу з кодуваннями. За замовчуванням використовується UTF-8 і надається можливість змінити кодування для кожного поля таблиці. На практиці мені так і не вдалося встановити Windows Cyrillic.

VistaDB підтримує вельми функціональний діалект мови SQL. Проте, швидкісні показники, отримані в результаті виконання тестів, відносно невисокі. Правда, взаємодіяти з базою можна не тільки шляхом виконання SQL-запитів, але і за допомогою DDA (Direct Data Access). В останньому випадку швидкодія значно зростає.

Німецька СУБД - ще один комерційний продукт. На сайті виробника представлено цілих п'ять варіацій даної СУБД, кожен з яких задовольняє своїм вимогам: TurboDB for VCL 5.10, TurboDB Managed 1.4, TurboDB for .NET 5.10, TurboDB ODBC (Release Candidate) і TurboDB Studio 4.16. Для тесту я вибрав Managed редакцію, повністю сумісну з .Net Framework 2.0 і Compact Framework 2.0.

Вартість продукту - EUR 299.00 для індивідуальних розробників і EUR 499.00 для компаній. Будь-який з продуктів лінії TurboDB можна скачати з сайту безкоштовно використовувати протягом 30 днів.

Комплект документації до продукту дещо скромніші, ніж у VistaDB. але основні питання, що виникають при роботі з БД, висвітлені. Незважаючи на те, що в документації задекларований широкий набір прикладів, за фактом їх не виявилося. Для того щоб ознайомитися з ними (а нюанси реалізації провайдера просто не залишають іншого вибору), довелося завантажити попередню версію СУБД.

Досить незвично організований менеджер БД. Спочатку принципи його роботи здалися мені дуже незручними, потім же я зрозумів, що основне його завдання - безболісна інтеграція SQL-коду в додаток. Менеджер більш ефективно справляється з налагодженням SQL-запитів, ніж з керуванням структурою бази.

Показники швидкості обробки запитів TurboDB виявилися цілком задовільними. Особливо хороша TurboDB виявилася на select'e.

Відносно молода, але динамічно розвивається СУБД - продукт датських розробників. Дана СУБД має дві версії - parallel server і embedded database. З початку цього року обидва ці продукту поширюються безкоштовно, однак це жодним чином не відбивається на їх якісні характеристики. Результати тесту говорять самі за себе. Творці Scimore особливий акцент роблять на можливості роботи з великими обсягами даних і стабільності бази.

Власне, назва СУБД (Scimore = More science) говорить сама за себе. Далеко не кожна серверна СУБД може конкурувати з набором підтримуваних рішень, що надаються Scimore Embedded DB. Підтримка транзакцій, кластерів, deadlock detection - ось далеко не повний перелік можливостей Scimore.

Набір підтримуваних SQL-директив цілком задовільний. Крім того, Scimore підтримує власну мову запитів - DQL (Distributed Query Language). Все SQL-запити перед виконанням транслюються в DQL. До слова, пряме використання DQL здатне підвищити продуктивність виконання запитів майже на 20%.

Фізично Scimore Embedded DB являє собою одну-єдину dll-бібліотеку. Кожна з таблиць в базі зберігається у власному файлі. Крім таблиць користувача, Scimore створює кілька службових таблиць.

Процес створення таблиць у вбудовується версії Scimore може здатися дещо незручним. Проблема в тому, що сама база ініціюється в коді програми, тому, для того щоб «побачити» її з Database manager'а, програма має бути запущено. Втім, таблиці серверної та вбудованої версій Scimore сумісні, тому для створення структури БД можна використовувати і сервер. Сумісність таблиць дає ще одна очевидна перевага - масштабованість додатки. Так, настільний однокористувальницький продукт шляхом незначних модифікацій може легко перетворитися в клієнт-серверний продукт і навпаки. Власне, навіть до embedded-додатком можна здійснювати на багато користувачів доступ.

«Движок» СУБД не прив'язаний до .Net Framework. Розробникам ПЗ надається не тільки .Net-адаптер, але і SDK для використання БД в Win32-додатках. DDEX-Provider, що дозволяє використовувати Server Explorer Visual Studio для створення DataBase-з'єднань, в комплект поставки не входить. Але той факт, що Database Manager використовує .Net, наводить на думку про те, що основну ставку розробники БД зробили саме на .Net-програмістів.

Взагалі, у мене склалося враження, що Scimore навряд чи здатний спростити процес розробки. Але в тому випадку, якщо акцент робиться на продуктивність (навіть для «одного користувача» додатків це буває важливо), або ж до проекту пред'являються особливі вимоги, - Scimore на висоті.

До явних недоліків можна віднести практична відсутність прикладів використання Scimore. Документація доступна тільки on-line. На жаль, на відміну від тієї ж VistaDB. Scimore не може бути використаний в Delphi for Win32 (Ruby, PHP і т.д.) додатках. В принципі, в Delphi for .Net його використання також утруднено, оскільки дана середовище розробки використовує .Net Framework 1.1, а Scimore передбачає роботу з .Net Framework 2.0.

Дійсно, при такому різноманітті СУБД, що підтримують .Net, зупинити свій вибір на якомусь конкретному рішенні досить важко, але, тим не менш, таке завдання досить регулярно виникає у розробників прикладного ПО. Ймовірно, результати проведених мною тестів не дозволять повністю оцінити всі достоїнства і недоліки розглянутих СУБД, але деяке уявлення про них ви зможете скласти.

Схожі статті