Вы, конечно, знаете о свободной карте OpenStreetMap. Это настоящая народная карта, создаваемая такими же людьми как и вы! Это такой же opensource-проект как Linux и как Википедия.
Конечно же, как и в других картах, в OpenStreetMap имеются ошибки, но в отличие от тех же Яндекс.Карт, где ошибки не исправляются годами из-за сложной бюрократической процедуры (я уже не говорю о намеренных ошибках), в OpenStreetMap всё гораздо проще и лучше для всех нас...
Подробнее..
Не так давно CloudMade выделил несколько приоритетных направлений, среди которых оказалась и навигация. Решено было создать специальный проект Navi Studio, который объединял бы в себе несколько более мелких сервисов и позволял пользоваться ими, для создания полноценного навигационного программного обеспечения. В Navi Studio вошли:
Работа закипела и уже появилось несколько приложений использующих данный проект. Но полноценной навигации без соблюдения правил ПДД не существует, а потому данному вопросу было также уделено не мало времени...
Подробнее..
Недавно наткнулся в сети на один занимательный интернет-сервис, именующийся Web 2.0 Suicide machine . Предназначен он для того, чтобы позволить людям, обремененным «социальной жизнью в интернете», в пару кликов удалить свои аккаунты на Facebook (в данный момент сервис блокирован администрацией по IP), Twitter, Linkedin
и Myspace. В общем-то судя по количеству положительных отзывов и «успешных очищений» — пипл хавает зависимые от социальных сетей успешно пользуются сервисом и довольны...
Подробнее..
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 с обычными реляционными таблицами и колонками, а так же позволяет управлять транзакциями и возврашать курсоры данных.
Данная СУБД позволяет:
Работать с таблицами колонками и индексами.
Ваши вызовы происходят не с помощью 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 индексами.
habrahabr.ru/blogs/sql/
Читайте: |
---|
Оздана новая система беспроводной связи - она в 10Ученые из Национального тайваньского университета разработали новую систему беспроводной передачи данных, которая позволит передавать инф... |
Как взломали TwitterВ Интернетах, наряду с iPad, сканерами в аэропортах и войне между Google и Apple, уже второй день подряд активно обсуждается тема взлома и... |