[ обговорити ] Утиліта, призначена для організації реплікації даних між декількома БД SQLite. Утиліта підтримує три базові операції:
- Формування файлу хеш-сигнатур, що відображають поточний стан всіх записів БД.
- Генерацію delta-патча на основі порівняння поточного стану бази зі станом відбитим у файлі сигнатур.
- Ефективно використовувати час в БД на основі заданого delta-патча:
Сигнатури обчислюються з використанням хеш-функції MurmurHash для всіх даних одного рядка або групи рядків бази. Розмір файлу сигнатур займає близько 10% від розміру вихідної бази, але є можливість обчислення і перевірки сигнатур відразу для декількох рядків, що дозволяє значно скоротити розмір файлу сигнатур за рахунок збільшення розміру delta-патча. Примітно, що при генерації однієї сигнатури для N-рядків, розмір файлу з сигнатурами зменшується в N раз. Угруповання переважно використовувати для баз великого розміру, дані в яких змінюються не часто.
Приклад з доведення неоновленою версії slave.db до актуальної БД master.db:
sqlite3-rdiff --rows-per-hash 16 signature slave.db slave.db.sign sqlite3-rdiff delta slave.db.sign master.db slave.db.delta sqlite3-rdiff patch slave.db slave.db.delta slave .dbУ підсумку, для slave.db розміром 1.5 Гб буде згенеровано патч slave.db.delta розміром 4.3 Мб і файл сигнатур slave.db.signature розміром 13 Мб. В даний приклад (--rows-per-hash 16) сигнатура створюється для 16 рядків таблиці, якщо формувати сигнатуру для кожного рядка, то підсумкові файли будуть наступного розміру: slave.db.delta - 3.4 Мб, slave.db.signature - 160 Мб.
CouchDB - document-oriented database [ + ][ обговорити ] Розподілена, документ-орієнтована база даних, що відноситься до класу NoSQL-систем. Запити до CouchDB і індексація даних можуть виконуватися відповідно до парадигми MapReduce, використовуючи для формування логіки вибірки даних мову JavaScript. Доступ до БД проводиться за допомогою протоколу HTTP з використанням RESTful JSON API. В якості одиниці зберігання даних виступає документ, який має унікальний ідентифікатор, версію і містить довільний набір іменованих полів в форматі ключ / значення. Для організації псевдо-структурованого набору даних з довільних документів (агрегування і формування вибірок) застосовується концепція формування уявлень (view), для визначення яких використовується мова JavaScript. На JavaScript також можна визначати функції для перевірки коректності даних при додаванні в рамках певного уявлення нових документів.
CouchDB зберігає дані в форматі впорядкованого списку і дозволяє здійснювати часткову реплікацію даних між декількома БД в режимі «майстер-майстер» з одночасним виявленням і вирішенням конфліктних ситуацій. Кожен сервер зберігає свій локальний набір даних, синхронізований з іншими серверами, які можуть переводитися в offline-режим і періодично реплицировать зміни. Зокрема, дана можливість робить CouchDB привабливим рішенням для організації синхронізації налаштувань програм між різними комп'ютерами, що вже використовується для синхронізації вмісту адресної книги ПК c мобільним телефоном через сервіс Ubuntu One.
Ядро системи написано на мові Erlang, оптимізованого для створення обслуговуючих безліч паралельних запитів розподілених систем. View-сервер написаний на мові Сі і базується на JavaScript-движку Mozilla Spidermonkey. Вихідні тексти проекту поширюються під ліцензією Apache 2.
redis - persistent key-value database [ + ][ обговорити ] представлений проект Redis , Який продовжує ідеї таких проектів, як memcached і memcachedb , І є серверним сховищем даних виду ключ / значення. Для забезпечення максимальної продуктивності Redis під час роботи зберігає всі дані в оперативній пам'яті, періодично зберігаючи знімки бази на диск. Архітектура програми - однопроцессной, заснована на обробці подій, що дозволяє уникнути блокувань.
У порівнянні з memcached, Redis дозволяє використовувати в якості значень не тільки рядки, а й списки, множини. Механізми транзакцій відсутні, що компенсується багатим набором атомарних команд: інкремент / декремент, стандартні операції над списками і множинами, перейменування ключів, множинна вибірка і т.д.
Redis може виявитися хорошим вибором для високонавантажених сервісів, так як адаптований під максимальну продуктивність і підтримує реплікацію, а клієнтські бібліотеки доступні для більшості популярних мов: Perl, Python, Java, Ruby, Tcl і інших. заявлені значення продуктивності складають 110000 операцій записи або 81000 операцій вибірки в секунду на процесорі Xeon X3320 2.5 ГГц під управлінням Linux 2.6. Ще однією перевагою можна вважати ліберальну ліцензію BSD.
Mycached - memcached protocol support for MySQL [ + ][ обговорити ] В рамках проекту Mycached реалізована підтримка протоколу memcached для звернення до MySQL баз, тобто дає можливість звернутися до існуючої MySQL основі не через SQL запит, а через протокол memcached. Проект виступає свого роду протилежністю memcached сховища до MySQL, що дозволяє звертатися до зовнішнього mymcached сервера через стандартні SQL команди.
За задумом авторів Mycached, прямий запит ключів зі сховища, дозволить оптимізувати швидкість виконання запитів, завдяки пропуску кроків по парсингу SQL і планування виконання запиту. При попередньому тестуванні, в найпростіших запитах, звернення по протоколу memcached виявилося в два рази швидше, ніж виконання стандартних SQL запитів, забезпечивши при цьому значне випередження в плані організації паралельних запитів до бази. Mycached дозволяє комбінувати гнучкість MySQL з високою продуктивністю рішень подібних MemcacheDB (модифікована версія memcached зі збереженням кешу на диск в Berkeley DB базі).
На даний момент Mycached підтримує тільки читання даних (команда get) і прозоре перетворення записи в JSON уявлення (додавання постфікса ": json" до запитуваного ключу). Можливе виведення декількох стовпців за один запит і висновок окремих стовпців.
TOra - Toolkit For Oracle (Версія: 2.0 від 2008-11-11) [ + ][ обговорити ] GUI-інтерфейсу для управління СУБД розробниками та адміністраторами БД. TOra спочатку був розроблений для Oracle, але надалі була додана підтримка MySQL і PostgreSQL.
До складу пакету входить PL / SQL відладчик, інтерфейс для виконання SQL запитів з підсвічуванням синтаксису і автодоплненіем операторів, браузер структури і вмісту БД, засоби для перегляду статистики роботи СУБД, модулі візуалізації і аналізу результатів виконання запиту, засоби для моніторингу продуктивності, виявлення вузьких місць і формування пропозицій по тюнінгу налаштувань СУБД. Код TOra поширюється в рамках ліцензії GPL.
У версії 2.0 проведено міграція на використання бібліотеки QT4, реалізована підтримка Oracle 11g і розширений набір інструментів для PostgreSQL.
SQLiteDBMS - сервер баз даних для SQLite (Версія: 0.5.1 від 2006-11-16) [ + ][ обговорити ] СУБД сервер на базі SQLite , Для обробки клієнтських запитів використовує вбудований HTTP сервер з підтримкою WebDAV і протоколом обміну даними на базі XML.
Використання HTTP і XML дозволяють безпосередньо організувати звернення до СУБД з динамічних клієнтських JavaScript додатків (Ajax), минаючи необхідність створення проміжних скриптів на сервері. Крім того, в SQLiteDBMS інтегровані засоби для керування вмістом бази даних через web-інтерфейс.
Для управління доступом використовується аутентифікація по паролів і найпростіша система розмежування доступу, включаючи реалізацію таких команд як CREATE / DROP DATABASE, CREATE / DROP / ALTER USER, GRANT / REVOKE. У планах реалізація підтримки SSL, створення системи реплікації і віддзеркалення даних.