Oracle выпустила Embedded InnoDB.
Совсем недавно «красный гигант» выпустили Embedded InnoDB, под довольно демократичной лицензией GPLv2, не Апатч 2.0 но тоже сносно.
В данный момент данная БД доступна только для 32-х битных версии Windows и Linux.
Качать и ставить я бы пока не рискнул, сначала хочется осмотреться. Идеться в доку и читается. Так как сегодня на работе мне делать все равно нечего сделаю небольшой обзор-перевод.
Курсивом ниже будет написан текст из доки, обычным шрифтом мое мнение на этот счет.
Данная БД разработана для критичных приложений и с успехом справляется как килобайтами данных так и объемами в несколько гигабайт.
Для доступа к данным и управлением БД и транзакциями используются специальные API.
Это типо никакого тибе SQL, пока не так занимательно.
Так как InnoDB является встраиваемым движком, он супер быстрый.
Вот это уже хочется протестировать, возможно к концу статьи они так раскрутят меня установить InnoDB и протестировать.
Причина быстроты данной БД является то, что она запускается в том же адресном пространстве, что и ваще приложение, и позволяет избежать дорогостояших процедур коммуникации как в случае с классическими СУБД.
Хм, что-то вроде Google Gears??
Важный момент, что данная СУБД не является реляционной базой данных и как следствие не предоставляет таких высокоуровневых функции как триггеры и ничего похожего на SQL. InnoDB это лишь набор API низкого уровня для эффективного чтения/записи ваших данных.
Embedded InnoDB позволяет вам встраивать процессор дазы данных в ваше приложение, без необходимости устанавливать любую другую вашу СУБД. Операции с базой данных осуществляются по средствам плагина. Который позволяет осуществлять стандартные действия: insert, update, delete с обычными реляционными таблицами и колонками, а так же позволяет управлять транзакциями и возврашать курсоры данных.
Данная СУБД позволяет:
Использование.
Качаем ставим, старутем бд, запускаем любое IDE.
создаем БД:
создаем табличку:
простой
в языке API InnoDB будет выглядеть так:
Область применения данной бд это в первую очередь автономно работающие устройства, которые по определению не имеют связи с внешним миром, но на них возложены функции сбора некоторых данных. Так же возможно применение на мобильных устройствах, учитывая что приложение с открытым кодом оно должно отлично установится в андроид.
Так и напрашивается сравнение с Google Gears, очень схожие технологии. Различие Gears для броузерзерных оффлайн приложений приложений, InnoDB для десктопных.
Однако гуглы все лучше реализовали по части дружилюбия к пользователю, гугл умеет полноценный SQL.
Аналогичный предышему код на гугл будет выглядеть так:
В как минимум 100 раз лаконичнее не правда ли?? Но несмотря на все удобство гугл не может похвастаться ни транзакциями ACID, ни втроенными средствами восстановления базы данных, ни B-tree индексами.
Совсем недавно «красный гигант» выпустили Embedded InnoDB, под довольно демократичной лицензией GPLv2, не Апатч 2.0 но тоже сносно.
В данный момент данная БД доступна только для 32-х битных версии Windows и Linux.
Качать и ставить я бы пока не рискнул, сначала хочется осмотреться. Идеться в доку и читается. Так как сегодня на работе мне делать все равно нечего сделаю небольшой обзор-перевод.
Курсивом ниже будет написан текст из доки, обычным шрифтом мое мнение на этот счет.
Концепция.
Данная БД разработана для критичных приложений и с успехом справляется как килобайтами данных так и объемами в несколько гигабайт.
Для доступа к данным и управлением БД и транзакциями используются специальные API.
Это типо никакого тибе SQL, пока не так занимательно.
Так как InnoDB является встраиваемым движком, он супер быстрый.
Вот это уже хочется протестировать, возможно к концу статьи они так раскрутят меня установить InnoDB и протестировать.
Причина быстроты данной БД является то, что она запускается в том же адресном пространстве, что и ваще приложение, и позволяет избежать дорогостояших процедур коммуникации как в случае с классическими СУБД.
Хм, что-то вроде Google Gears??
Важный момент, что данная СУБД не является реляционной базой данных и как следствие не предоставляет таких высокоуровневых функции как триггеры и ничего похожего на SQL. InnoDB это лишь набор API низкого уровня для эффективного чтения/записи ваших данных.
Embedded InnoDB позволяет вам встраивать процессор дазы данных в ваше приложение, без необходимости устанавливать любую другую вашу СУБД. Операции с базой данных осуществляются по средствам плагина. Который позволяет осуществлять стандартные действия: insert, update, delete с обычными реляционными таблицами и колонками, а так же позволяет управлять транзакциями и возврашать курсоры данных.
Данная СУБД позволяет:
- Работать с таблицами колонками и индексами.
- Ваши вызовы происходят не с помощью SQL, вы оперируете вызовами API.
- Ваше приложение может быть без инсталятора. Все библиотеки линкуются как динамически так и статически. Все параметры имеют значения по умолчанию. Все необходимые файлы будут созданы. В данный момент нет необходимости проставлять никакие системые переменные.
- Расбота с базой данный осуществляется транзакциями ACID (Atomicity, Consistency, Isolation, Durability) и поддерживают commit / rollback / savepoint операции.
- Приложение возвращает данные в виде классического курсора.
- Вы можете контролировать уровни изолированности транзакции, а атк же модели блокировок как для таблиц так и курсоров.
- Умеет внешние ключи.
- Не позволяет менять свойства колонок после создания таблицы.
- Умеет B-tree структуры данных.
Использование.
Качаем ставим, старутем бд, запускаем любое IDE.
создаем БД:
ib_err_t err = ib_database_create("test");
создаем табличку:
простой
CREATE TABLE T(c1 VARCHAR(32), c2 VARCHAR(32), c3 UNSIGNED INT, PK(c1, c2));
в языке API InnoDB будет выглядеть так:
ib_trx_t ib_trx;
ib_id_t table_id = 0;
ib_tbl_sch_t ib_tbl_sch = NULL;
ib_idx_sch_t ib_idx_sch = NULL;
char table_name[IB_MAX_TABLE_NAME_LEN];
snprintf(table_name, sizeof(table_name), "%s/%s", database_name, name);
/* Pass a table page size of 0, ie., use default page size. */
ib_table_schema_create(table_name, &ib_tbl_sch, IB_TBL_COMPACT, 0);
ib_table_schema_add_col(ib_tbl_sch, "c1", IB_VARCHAR, IB_COL_NONE, 32);
ib_table_schema_add_col(ib_tbl_sch, "c2", IB_VARCHAR, IB_COL_NONE, 32);
ib_table_schema_add_col(ib_tbl_sch, "c3", IB_INT, IB_COL_UNSIGNED, 4);
/* Index schema handle is "owned" by the table schema handle in this
case and will be deleted when the table schema handle is deleted. */
ib_table_schema_add_index(ib_tbl_sch, "PRIMARY_KEY", &ib_idx_sch);
/* Set prefix length to 0. */
ib_index_schema_add_col( ib_idx_sch, "c1", 0);
/* Set prefix length to 0. */
ib_index_schema_add_col( ib_idx_sch, "c2", 0);
ib_index_schema_set_clustered(ib_idx_sch);
/* Create the transaction that will cover data dictionary update. */
ib_trx = ib_trx_begin(IB_TRX_SERIALIZABLE);
/* Lock the data dictionary in exclusive mode */
ib_schema_lock_exclusive(ib_trx);
/* Create the actual table from the schema. The table id of the new
table will be returned in table_id. */
ib_table_create(ib_tbl_sch, &table_id);
/* Commit the transaction */
ib_trx_commit(ib_trx);
/* Release the data dictionary lock. */
ib_schema_unlock(ib_trx);
ib_table_schema_delete(ib_tbl_sch);
Область применения данной бд это в первую очередь автономно работающие устройства, которые по определению не имеют связи с внешним миром, но на них возложены функции сбора некоторых данных. Так же возможно применение на мобильных устройствах, учитывая что приложение с открытым кодом оно должно отлично установится в андроид.
Так и напрашивается сравнение с Google Gears, очень схожие технологии. Различие Gears для броузерзерных оффлайн приложений приложений, InnoDB для десктопных.
Однако гуглы все лучше реализовали по части дружилюбия к пользователю, гугл умеет полноценный SQL.
Аналогичный предышему код на гугл будет выглядеть так:
try {
db = Factory.getInstance().createDatabase();
db.open("BaseApp11");
db.execute("create table if not exists baseapp11 (Timestamp int)");
db.execute("delete from baseapp11");
} catch (GearsException e) {
Window.alert(e.toString());
}
В как минимум 100 раз лаконичнее не правда ли?? Но несмотря на все удобство гугл не может похвастаться ни транзакциями ACID, ни втроенными средствами восстановления базы данных, ни B-tree индексами.