Kraplax 31.05.2009 21:41

KDEСтолпы KDE4. Akonadi

Столпы KDE4. Akonadi.

В мире информации необходимы как эффективные методы обмена ей, так и способы ее хранения. В каждой современной системе используется несколько различных СУБД, каждая из которых обладает своими достоинствами и была выбрана для удовлетворения определенных нужд. Однако, разнообразие в форматах порождает проблему совместимости и совместной работы с ресурсами. Чтобы решить проблему дублирования данных и несовместимости форматов, был начат проект Akonadi — четвертый из рассмотренных нами столпов KDE4.



Akonadi создавался как расширяемая система хранения персональных данных и метаданных для настольных компьютеров, обеспечивающая одновременный доступ для чтения, записи и создания запросов. Помимо этого, Akonadi включает несколько компонентов, таких как поиск и кэш, позволяющий получить быстрый доступ к данным, и уведомления об их изменении.



В чем суть работы Akonadi и зачем он нужен?



Начнем с того, зачем всё это нужно. В KDE 3 приложения управления персональной информацией (такие, как Kontact) хранят свои данные и настройки раздельно, дублируя одинаковые данные. Связка KMail и KResources уже исчерапала все свои возможности, настала пора решить проблему разделяемых ресурсов и асинхронного доступа к ним: в KDE3 Kontact держит в оперативной памяти 6 копий вашей адресной книги! Кроме того, была цель создать нечто более стандартизированное - такому открытому проекту невозможно развиваться, не считаясь с нуждами и направлениями развития других крупных и важных проектов. Поэтому решено было создать клиент-серверную систему, основанную на стандартных форматах хранения и обмена данных, с поддержкой D-Bus, и не зависящую от платформы и инструментария разработки. Реализацией этой идеи и стал Akonadi.

Возникает резонный вопрос - не достаточно ли уже создано различных groupware решений, обещающих работать с любыми типами данных? Сразу же поясним: Akonadi - это не groupware сервер! Напротив, Akonadi является промежуточным хранилищем, уровнем абстракции для персональных данных. Он сродни рассмотренным ранее Phonon и Solid.



Базовый принцип организации Akonadi

Данная диаграмма отображает основные аспекты архитектуры Akonadi. Все основывается на централизованном хранилище данных, доступ к которому осуществлен с помощью протокола, не привязанного к определенной платформе или языку программирования. Поверх этого протокола организован набор API, которые используются для доступа к персональной информации в хранилище. Есть два типа клиентов Akonadi. Первый тип - это приложения, такие как Kontact, Evolution, KOffice. Второй тип - это такие ресурсы, которые позволяют центральному хранилищу Akonadi обмениваться информацией с внешними источниками данных. Такими источниками могут быть groupware-сервера (например, GroupWise или OpenExchange), другие механизмы хранения данных (файлы формата iCalendar, vCard), или стандартные протоколы (IMAP, POP и т.д.).



Это далеко не полная диаграмма и она показывает упрощённый пример использования. Akonadi спроектирован как гибкая система, доступная широкому спектру приложений и ресурсов. Часть концепции Akonadi заключается в том, что добавление новых API, соответствующих клиентов и источников должно быть предельно простым.



Такая архитектура имеет несколько преимуществ перед тем, что было в KDE3:


Личные данные держатся в памяти в единственном экземпляре.
Система централизированна, поэтому любые изменения происходят единовременно, позволяя всем компонентам работать с самыми свежими версиями данных.
Архитектура Akonadi спроектирован для организации асинхронного обмена данными (больше не должно происходить "замирания" приложения при обмене данными).



Что Akonadi даст простым пользователям?



Для пользователя плюсы не так очевидны, но все же довольно существенны. Как уже было сказано выше, все приложения используют одно хранилище, поэтому нет необходимости в дублировании данных в памяти. Соответственно, меньшая ресурсоёмкость. Кроме того, для доступа к хранилищу используется расширенная версия протокола IMAP, что повышает скорость извлечения данных. Тот же протокол IMAP предоставляет базовые возможности поиска, которые могут быть реализованы и расширены в каждом отдельном приложении.

Всем наверняка знакомы такие апплеты Plasma как календарь, оставить заметку и т.п. - все они используют один общий ресурс Akonadi. И если раньше вы могли видеть проблемы синхронизации данных между приложениями (например, если Kopete меняла данные о контакте, а Konversation в это время просматривал их), то теперь вопросы синхронизации берет на себя сервер Akonadi и данные автоматически обновляются везде (например, дни рождения в плазмоиде календаря). Более того, синхронизация данных с удаленным сервером становится для пользователя совершенно прозрачной.



Кроме того, станет возможной более удобная интеграция личных данных в другие приложения KDE. Например, кроме имени пользователя можно будет отображать его фотографию в свойствах файла. Компоненты обмена данными между сервером Akonadi и источником данных (например, тот же groupware-сервер) разделены на отдельные процессы, что помогает избежать аварийного завершения работы всей системы в случае ошибки. Сбойный процесс компонента может быть просто перезапущен и данные будут загружены заново.



Что даст Akonadi программистам?



Поскольку Akonadi берёт на себя заботу о получении и хранении данных, что обычно является самой сложной частью в разработке PIM, то теперь разработка PIM-приложений стала проще. Например, каркас почтового клиента Mailody, использующего Akonadi, был написан за 10 минут.





Основные особенности архитектуры Akonadi:

* Общий кэш персональных данных

Независимый от типов ресурсов дизайн
Расширяемость
Базовый доступ в режиме оффлайн, запись и воспроизведение изменений
Базовая система обнаружения и разрешения конфликтов
Ресурсы сгруппированы по профилям
Элементы данных составлены их множества независимо получаемых частей

* Одновременный доступ позволяет вести фоновые процессы независимо от интерфейса

Синхронизация почты, календаря и адресной книги с удаленными серверами
Синхронизация с мобильными устройствами
Позволяет инфраструктуре семантического окружения получать доступ к персональной информации
Архивация
Индексирование
Поиск "вне-процесса"

* Многопроцессный дизайн

Изоляция крэшэй
Большие элементы не блокируют всю систему
Линковка по IPC позволяет использование проприетарных компонент
Установки тонкого клиента могут разделять компоненты для большей масштабируемости



Что значит независимый от типов ресурсов? Groupware, IMAP, MS Exchange, vCard и всё остальное - это отдельные ресурсы, поддержка которых осуществляется за счет разных движков. Аналогично Phonon и Solid, движки на разных платформах предоставляют теоретически неограниченные возможности по работе со всевозможными типами источников данных. Разработчикам же предоставляется единый API для работы, поэтому написание приложений для работы с персональной информацией становится на порядок легче.

Общий дизайн Akonadi и его составляющих описан в документации API. Более подробную информацию можно найти в странице проекта на Techbase.



Информация взята с официального сайта Akonadi, статьи об Akonadi в русской Википедии, а также из интервью Тобиаса Кёнига (Tobias Koenig), одного из ведущих разработчиков Akonadi, для kubuntu-de.org. Также были использованы слайды презентаций, выложенные на официальном сайте Akonadi.


Тэги: Akonadi KDE4 PIM
+ 17 -
Похожие Поделиться

Username 31.05.2009 21:54 #
дрочу на кде4
люблю кеды.
kampfusbeke 31.05.2009 22:18 #
мда, даже и не знал, что раньше в кедах было все так плохо ;)

вы так скоро таки сподвигнете меня подробно оттестировать кде4 ;)
кстати, если таки решусь - из существующих дистров с ним какой лучше пробовать? главное, чтобы стабильно было все и не нужен был напильник. в своей рабочей системе не хочется это ставить... и переходить тоже не собираюсь, но посмотреть уже хочется.
спасибо за подробные статьи про устройство системы, это всегда интересно почитать, даже если в практическом смысле система не интересует!
fun 31.05.2009 22:35 #
В арче есть проект KDEmod (Типо кде доработаный напильником). Жутко хорош как по мне. Можно взять взять отсюда лив-сиди, если именно на попробывать.
Username 31.05.2009 23:05 #
лучший kde всегда был, есть и будет в opensuse
booley 31.05.2009 23:28 #
лучший kde всегда был, есть и будет у людей с прямыми руками :)
Username 31.05.2009 23:51 #
это тоже верно
KblCb 31.05.2009 23:48 #
Главное не *Ubuntu. Там традиционно КЕДы плохие.
Username 31.05.2009 23:51 #
нуну. ЧТЯДН?
xcr 01.06.2009 12:06 #
У меня тоже плохие. А ЧТЯДН?
Любовно скомпилированные кеды в генту, а также кеды в OpenSUSE работали в разы лучше, чем оные в ubuntu.
Username 01.06.2009 12:13 #
по дефолту. Я не знаю, что такого ужасного я делаю. Ну поковырял пару конфигов для Nepomuk'а, хм, установил вот последнюю версию 4.2.4.. да и все. Не помню, чтобы прям вот усирался много что-то ковырял
Username 31.05.2009 23:52 #
booley выше вообщем-то прав
zarkone 16.10.2009 11:55 #
в Mint вроде бы исправляют ситуацию..
lol2Fast4U 31.05.2009 22:38 #
И сколько памяти занимает все это хозяйство? А нагрузка на процессор?
SeaJey 01.06.2009 00:56 #
Обычно, столько же, сколько и простой мускуль.
l1feh4ck3r 01.06.2009 10:04 #
Самые адекватные действительно статьи на вилинукс. Жду продолжения, ибо действительно интересно пишешь.
NucleoFag 01.06.2009 11:11 #
Верно! Целый цикл. Лучше, но меньше и реже тока в персональных блогах =)
Kraplax 01.06.2009 11:23 #
но меньше и реже тока в персональных блогах

не могли бы перефразировать? а то что-то не понял сути :)
NucleoFag 01.06.2009 11:47 #
Многие it-шники ведут блоги. И если они сюда пишут качественные статьи, то логично предположить что статьи в их блогах настолько же качественны и хорошо написаны. Так? Просто из-за тематики и/или желания эти статьи сюда не попадают, а остаются в личных блогах автора. Так более понятно? =)

К чему это я? К тому что неважно по какой тематике статья, если она грамотно, актуально и хорошо написана - это клево. Ну и если есть цикл статей по одной тематике - вообще замечательно! => хотелось бы побольше видеть такого тут =)
Kraplax 01.06.2009 12:25 #
А, теперь понял =) спасибо =)
Kraplax 01.06.2009 11:23 #
Спасибо =)