<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Linux Forum &mdash; Компания Bloomberg открыла код распределённой СУБД Comdb2]]></title>
	<link rel="self" href="https://linuxforum.ru/extern.php?action=feed&amp;tid=39230&amp;type=atom" />
	<updated>2017-06-10T04:12:11Z</updated>
	<generator>PunBB</generator>
	<id>https://linuxforum.ru/viewtopic.php?id=39230</id>
		<entry>
			<title type="html"><![CDATA[Компания Bloomberg открыла код распределённой СУБД Comdb2]]></title>
			<link rel="alternate" href="https://linuxforum.ru/viewtopic.php?pid=455665#p455665" />
			<content type="html"><![CDATA[<p><br />&nbsp; &nbsp; Компания Bloomberg перевела СУБД Comdb2 в разряд открытых проектов. Comdb2 относится к категории реляционных кластерных СУБД, позволяющих развернуть БД поверх нескольких узлов кластера и обеспечивающих высокий уровень отказоустойчивости и производительности. Ключевой задачей Comdb2 является предоставление простой и надёжной распределённой системы, позволяющей обратиться к данным или внести изменение, подключившись к любому узлу, и получить автоматическую синхронизацию изменений на всех остальных узлах кластера, в том числе территориально разделённых. Разработка СУБД Comdb2 ведётся компанией Bloomberg c 2004 года. Код написан на языке Си и распространяется под лицензией Apache 2.0.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Узлы могут группироваться и связываться с другими группами узлов, размещённых в других центрах обработки данных. В каждой группе узлов автоматически выбирается главный узел репликации, который берёт на себя функции распределения потоков данных для синхронизации состояния остальных узлов. Репликация по умолчанию выполнятся в синхронном режиме, т.е. до получения подтверждения, что все узлы получили изменения, транзакция не закрывается, но если операция INSERT успешно завершена, то изменения сразу становятся видны для запросов в любых частях кластера.&nbsp; &nbsp; <span class="postimg"><img src="https://www.opennet.ru/opennews/pics_base/0_1497081698.png" alt="https://www.opennet.ru/opennews/pics_base/0_1497081698.png" /></span><br />&nbsp; &nbsp; &nbsp; Для обеспечения непротиворечивости изменения данных в&nbsp; &nbsp;Comdb2 применяется техника обеспечения параллелизма OCC (Optimistic Concurrency Control), предоставляющая несколько уровней изоляции транзакций, включая снапшоты и сериализируемые транзакции. Транзакции, осуществляющие чтение и запись данных, могут выполняться на всех узлах, при этом клиентская библиотека обеспечивает свободу выбора узла для подключения (клиент подключается к ближайшему доступному узлу, а в случае проблем может в прозрачном режиме переподключиться к другому узлу).&nbsp; &nbsp; &nbsp; Comdb2 обеспечивает гарантированную целостность и высокую доступность данных, но ценой ограниченной масштабируемости при выполнении операций записи (Comdb2 практически линейно масштабируется на чтение, но скорость выполнения операций записи сильно зависит от числа узлов).&nbsp; Тесты производительности демонстрируют для 6-узлового кластера способность обработать около 2000 операций записи в секунду и 2 млн операций чтения в секунду.&nbsp; &nbsp; &nbsp; &nbsp; Comdb2 поддерживает диалект языка SQL очень похожий на SQLite так как для разбора и планирования запросов применяются оригинальные парсер и планировщик от проекта SQLite. На дисковом уровне данных таблиц хранятся в сильно модифицированном представлении BerkeleyDB 4.2. Возможно создание хранимых процедур на языке Lua. Помимо реляционной модели доступа к данным СУБД также поддерживает и модель &quot;публикация/подписка&quot; (publish/subscribe), которая может комбинироваться с триггерами.&nbsp; &nbsp; &nbsp; Comdb2 предоставляет достаточно простую и ясную логику организации работы кластера: достаточно запустить Comdb2 на одном узле, создать БД и определить в настройках (простой файл со списком хостов) на каких ещё узлах обеспечить хранение данной БД. После чего можно при помощи команды copycomdb2 перенести данные на другие узлы и включить их в рампределённое хранилище. В дальнейшем, для взаимодействия с БД можно обращаться к любому из узлов кластера, при этом изменения будут реплицированы на остальные узлы.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />&nbsp; &nbsp; Источник: <strong>http://www.opennet.ru/opennews/art.shtml?num=46679</strong><br />&nbsp; &nbsp; <br /><a href="http://www.opennet.ru/opennews/art.shtml?num=46679">_источник</a></p>]]></content>
			<author>
				<name><![CDATA[R2-D2]]></name>
				<uri>https://linuxforum.ru/profile.php?id=40794</uri>
			</author>
			<updated>2017-06-10T04:12:11Z</updated>
			<id>https://linuxforum.ru/viewtopic.php?pid=455665#p455665</id>
		</entry>
</feed>
