В Москве Oracle Coherence 3.5, программный инструментарий для организации распределенных сред, содержащихся в оперативной памяти данных, был представлен месяц спустя поле мировой премьеры — в конце августа. Эта версия стала первым обновлением, выполненным под торговой маркой Oracle, а до 2007 года данный продукт именовался Tangosol Coherence — по названию разработавшей его компании Tangosol.
Московская премьера не привлекла к себе заметного внимания, и это определенно свидетельствует о неподготовленности к ее восприятию, что совершенно незаслуженно. В Coherence заложен весьма нетривиальный подход к созданию распределенных систем, имеющий хорошие перспективы и нуждающийся в серьезном переосмыслении. Нынешняя тенденция к многоядерности процессорных архитектур позволяет предположить, что Coherence или его последователи получат со временем более широкое распространение. Слово «когерентность» в название включено не случайно, его можно интерпретировать как восприятие чего-то единым целым, а не по отдельным составляющим. Продукт был задуман в качестве инструментария промежуточного слоя для управления размещенными в оперативной памяти данными для кластеризованных приложений J2EE и серверов приложений в многоуровневых архитектурах, сейчас он поддерживает и .Net, и C++. Coherence обеспечивает распределение данных, согласование, репликацию и модификацию данных в кластерных конфигурациях с гарантией высокой скорости и надежности. Эти качества заданы идеологией продукта, разработанной Кэмероном Парди, основателем Tangosol (после приобретения этой компании Oracle в 2007 году он стал вице-президентом Oracle по разработке). Парди по-своему смотрит на природу распределенных систем: он пришел к выводу, что их следует интерпретировать не как набор отдельных клеток, а как единый многоклеточный организм.
По мнению Парди, существует два альтернативных подхода к созданию распределенных программных систем: один можно назвать традиционным, а другой, предложенный им, — «органическим». В первом случае каждый сервер, каждый процесс рассматриваются изолированно, как отдельный одноклеточный организм. Одиночное существование несет свои сложности, его поддержание должно учитывать все возможные проблемы, организм должен быть рассчитан на самозащиту, то есть на нарушения в самом себе и в связях с окружением. На этом построена вся современная техника, вся теория надежности, где основными показателями являются средняя наработка на отказ (MTBF), среднее время восстановления (MTTR) и подобные им. Но, в отличие от других систем, компьютерные системы хорошо приспособлены к кластеризации, что дает возможность создания многоклеточных механизмов. Классическое представление о кластерах возникло вместе с первыми Unix-серверами, но сегодня с появлением серверов приложений, оно приобрело более широкий смысл. Серверы на базе Java EE могут работать на кластерах, собранных из виртуальных машин JVM, из них можно собирать многоклеточные «органические» системы. Суть органичности в том, что существование многоклеточного организма не подвергается угрозе в случае отмирания одной клетки. Толерантность к такому событию исключает необходимость в каких либо специальных действиях по восстановлению.
Среди технологий, используемых для создания «органического» кластера, можно выделить две — логическую модель кэширования и ее реализацию в форме обмен сообщениями каждого сервера с каждым (hub-less messaging, то есть без концентратора). Эти, расположенные в оперативной памяти кэши образуют грид данных (data grid). Память становится с каждым годом дешевле и дешевле, и в нынешних условиях позволительно иметь кэши большого размера. Coherence предполагает использование кэшей с различной функциональностью, выбор определенного типа зависит от предназначения системы. Общей для девяти возможных типов кэшей является модель взаимодействия называемая «совещательной комнатой», в ней каждый видит всех остальных, замечает появление и уход, может разговаривать с любым, подобная одноранговая модель позволяет одновременно говорить с несколькими. Система обмена сообщениями без концентратора обладает высокой надежностью и не предъявляет особых требований к поддерживающей ее аппаратуре.