<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Linux Forum &mdash; Релиз БД Apache Cassandra 2.0]]></title>
	<link rel="self" href="https://linuxforum.ru/extern.php?action=feed&amp;tid=30135&amp;type=atom" />
	<updated>2013-09-05T16:54:27Z</updated>
	<generator>PunBB</generator>
	<id>https://linuxforum.ru/viewtopic.php?id=30135</id>
		<entry>
			<title type="html"><![CDATA[Релиз БД Apache Cassandra 2.0]]></title>
			<link rel="alternate" href="https://linuxforum.ru/viewtopic.php?pid=362036#p362036" />
			<content type="html"><![CDATA[<p>Полное название: <strong>Релиз БД Apache Cassandra 2.0 с поддержкой триггеров и легковесных транзакций </strong></p><p><a href="https://blogs.apache.org/foundation/entry/the_apache_software_foundation_announces44">Представлен</a> релиз распределённой БД <a href="http://cassandra.apache.org/">Apache Cassandra 2.0</a>, относящейся к классу noSQL-систем и рассчитанной на создание высокомасштабируемых и надёжных хранилищ огромных массивов данных, хранимых в форме ассоциативного массива (хэша). Код проекта написан на языке Java и распространяется в рамках лицензии Apache 2.0.</p><p>БД Cassandra объединяет в себе полностью распределённую hash-систему Dynamo, обеспечивающую практически линейную масштабируемость при увеличении объема данных. Cassandra использует модель хранения данных на базе семейства столбцов (ColumnFamily), отличающуюся от систем подобных memcachedb, которые хранят данные только в связке ключ/значение, возможностью организовать хранение хэшей с несколькими уровнями вложенности.</p><p>Cassandra относится к категории хранилищ повышенно устойчивых к сбоям: помещаемые в БД данные автоматически реплицируются на несколько узлов распределённой сети или даже равномерно распределяются по нескольким дата-центрам. При сбое узла, его функции на лету подхватываются другими узлами. Добавление новых узлов в кластер и обновление версии Cassandra производится на лету, без дополнительного ручного вмешательства и переконфигурирования других узлов.</p><p>Для упрощения взаимодействия с БД поддерживается язык формирования структурированных запросов <a href="http://crlog.info/2011/03/29/cassandra-query-language-aka-cql-syntax/">CQL</a> (Cassandra Query Language), на первый взгляд напоминающий SQL, но существенно урезанный по функциональности. Например, можно выполнять только простейшие запросы SELECT с выборкой по определённому условию, но без поддержки сортировки и группировки. Добавление и обновление данных производится через единое выражение UPDATE, операция INSERT отсутствует (если записи нет, при выполнении UPDATE она создаётся). Из возможностей можно отметить поддержку пространств имён и семейств столбцов, создание индексов через выражение &quot;CREATE INDEX&quot;. Драйверы с поддержкой CQL подготовлены для языков <a href="http://www.apache.org/dist/cassandra/drivers">Python</a>, <a href="https://github.com/racker/node-cassandra-client">Java</a> (JDBC/DBAPI2) и <a href="https://github.com/racker/node-cassandra-client">JavaScript</a> (Node.js).</p><p>Изначально проект был разработан в недрах компании Facebook и в 2009 году передан под покровительство фонда Apache. Промышленные решения на базе Cassandra, способные обрабатывать тысячи запросов в секунду, развернуты для обеспечения сервисов таких компаний и оргнизаций, как Adobe, CERN, Cisco, IBM, HP, Comcast, Disney, eBay, Netflix, Sony, Rackspace, Reddit и Twitter. Наиболее крупный кластер серверов, обслуживающих единую БД Cassandra насчитывает более 400 машин и используется для хранения более 300 Тб данных.</p><p><a href="https://git-wip-us.apache.org/repos/asf?p=cassandra.git;a=blob_plain;f=NEWS.txt;hb=refs/tags/cassandra-2.0.0">Особенности</a> новой версии:</p><ul><li><p>Поддержка <a href="http://www.datastax.com/dev/blog/lightweight-transactions-in-cassandra-2-0">легковесных транзакций</a>, позволяющих гарантировать порядок выполнения последовательности операций и обеспечить изоляцию, защищающую от возникновения конфликтов при выполнении конкурирующих запросов;</p></li><li><p>Экспериментальная поддержка триггеров, позволяющих вынести выполнение критичного к производительности кода на сторону сервера, ближе к обрабатываемым данным. Пример задания триггера: &quot;CREATE TRIGGER myTrigger ON myTable USING &#039;org.apache.cassandra.triggers.InvertedIndex&#039;&quot;, где обработчик org.apache.cassandra.triggers.InvertedIndex задаётся в виде Java-класса;</p></li><li><p><a href="http://www.datastax.com/dev/blog/cql-in-cassandra-2-0">Расширение</a> языка <a href="http://cassandra.apache.org/doc/cql3/CQL.html">CQL3</a> (Cassandra Query Language) в направлении удобства использовании в data-driven-приложениях (отделение данных от логики из обработки в форме бэкенд/фронтэнд) и упрощения миграции с реляционных СУБД.<br /></p><ul><li><p>Добавление в выражение <a href="http://cassandra.apache.org/doc/cql3/CQL.html#selectStmt">SELECT</a> поддержки псевдонимов (alias), задаваемых при помощи ключевого слова &quot;AS&quot;, например, &quot; SELECT name AS user_name FROM users;&quot;. В блоках &quot;WHERE&quot; и &quot;ORDER BY&quot; псевдонимы не поддерживаются;</p></li><li><p>Возобновлена поддержка выражения &quot;ALTER TABLE DROP&quot; для таблиц CQL3;</p></li><li><p>В выражениях CREATE для пространств ключей, таблиц и индексов (CREATE KEYSPACE, CREATE TABLE и CREATE INDEX) добавлена поддержка условной операции &quot;IF NOT EXISTS&quot;, позволяющей выполнять операцию только при отсутствии объекта с указанным именем;</p></li><li><p>В выражение добавлена поддержка условия &quot;IF NOT EXISTS&quot;;</p></li><li><p>В выражение UDPATE добавлена поддержка условия &quot;IF&quot;;</p></li><li><p>Поддержка вторичных индексов для столбцов, отмеченных как первичные ключи (PRIMARY KEY);</p></li></ul></li><li><p>Поддержка библиотеки <a href="http://www.opennet.ru/opennews/art.shtml?num=26195">JEMalloc</a> с реализацией высоко эффективных функций распределения памяти, позволяющих заметно снизить уровень фрагментации памяти;</p></li><li><p>Оптимизация упаковки данных в хранилище, позволяющая сохранить высокую производительность чтения в конфигурациях с большой нагрузкой на запись;</p></li><li><p>Режим горячего повтора операции для избежания возникновения таймаутов при выполнении запроса - если после отправки первого запроса прошло слишком много времени без ответа отправляется дополнительные запросы к другим репликам;</p></li><li><p>Собственная реализация <a href="http://en.wikipedia.org/wiki/Apache_Thrift">Thrift-сервера</a>, созданная на основе библиотеки <a href="http://lmax-exchange.github.io/disruptor/">LMAX Disruptor</a>, предоставляющей средства обмена сообщениями между нитями с минимальной задержкой.</p></li></ul><p>Источник: <a href="http://www.opennet.ru/opennews/art.shtml?num=37824">http://www.opennet.ru/opennews/art.shtml?num=37824</a></p>]]></content>
			<author>
				<name><![CDATA[Rizado]]></name>
				<uri>https://linuxforum.ru/profile.php?id=23158</uri>
			</author>
			<updated>2013-09-05T16:54:27Z</updated>
			<id>https://linuxforum.ru/viewtopic.php?pid=362036#p362036</id>
		</entry>
</feed>
