Открыть список
Как стать автором
Обновить
  • по релевантности
  • по времени
  • по рейтингу

Riak — веб-ориентированная система хранения данных

NoSQL


Немного статей на хабре посвящены новому движению в IT индустрии — NoSQL. Я решил изменить это и написал статью-перевод-обзор об одном из докладов с конференции NoSQL прошедшей 5 октября в Нью-Йорке. В этой статье будет говорится о системе Riak, с которой мне довелось иметь счастье работать последнее время.

Что такое Riak? Многие модные слова популярные сейчас, можно отнести к Riak. Riak — это документно-ориентированная база данных. Riak — это децентрализованное key-value хранилище данных, с поддержкой стандартных операций — get, put и delete. Riak — это распределенное, масштабируемое, отказоустойчивое решение для хранения информации. А так же Riak — это система с открытым исходным кодом и поддержкой обращений с помощью HTTP, JSON и REST. Ну и конечно RIAK — это NoSQL.

Читать дальше →
Всего голосов 80: ↑74 и ↓6 +68
Просмотры27K
Комментарии 32

Обзор NoSQL систем

NoSQL
Беспрецедентные объемы данных заставляют разработчиков и бизнес приглядываться к альтернативам реляционных баз данных, используемым вот уже более тридцати лет. В совокупности все эти технологии известны как «NoSQL базы данных».


Основной проблемой является то, что реляционные базы данных не могут справляться с нагрузками актуальными в наше время (мы говорим о high-load проектах). Есть три конкретные проблемных области:
  • горизонтальное масштабирование при больших объемах данных, например как в случае Digg (3 терабайта для зеленых значков, отображаемых, если ваш друг сделал dugg на статье) или Facebook (50 терабайт для поиска по входящим сообщениям) или eBay (2 петабайта в целом)
  • производительность каждого отдельного сервера
  • не гибкий дизайн логической структуры.
Читать дальше →
Всего голосов 101: ↑98 и ↓3 +95
Просмотры49.6K
Комментарии 67

Бенчмаркинг при помощи Basho Bench

Pravo.ru
Ребята из Basho team в дополнение к своей NoSQL-базе Riak и утилите для сборки rebar сделали еще одну полезную вещь — Basho Bench, утилиту для бенчмаркинга.

Изначально Basho Bench позиционировалась как утилита для тестирования производительности key-value-хранилищ, но в ходе его развития как-то само собой оказалось, что тестировать с ее помощью можно и другие приложения.

Быстрый старт.
Читать дальше →
Всего голосов 28: ↑23 и ↓5 +18
Просмотры3.5K
Комментарии 2

Паттерны использования Riak

NoSQL
Riak это NoSQL решение, честная DHT (key/value storage) с дополнительными возможностями для разруливания конфликтов.

У распределенной хеш таблицы есть как плюсы, так и минусы. DHT хорошо масштабируется, но возможны потери данных из-за конфликтов конкурентного доступа, рассмотрим следующий пример:

client a: def o-value = DHT.get("some-key");
client a: def a-value = changeValue(o-value);
client b: def o-value = DHT.get("some-key");
client a: DHT.put("some-key", a-value);
client b: def b-value = changeValue(o-value);
client b: DHT.put("some-key", b-value);


Получилось, что клиент b переписал данные клиента a и никто об этом не знает (ни a, ни b, ни тот, кто прочтет данные по этому ключу позже).

Так как многие NoSQL базы данных в своей основе имеют DHT, интересно смотреть как они пытаются решить проблему конкурентного доступа.

Например, MongoDB использует compare-and-swap стратегию: с каждым документом (значением) храниться его версия, при обновлении указывается версия «предка» измененного документа, если в базе в момент обновления храниться предок, то обновление проходит, если нет, то нет: обновляющая сторона получает сообщение, и пытается провести обновление снова — аналог STM. Такой подход хорошо работает с шардами, но плохо с репликацией.

Riak решает проблему конкурентного доступа подобно системам контроля версий, он, как бы, сохраняет конфликтные версии в разных бранчах, предоставляя программе при следующей выборке провести merge. Такой подход позволяет разрешать конфликты, связанные не только с конкурентным доступом, но и с времянной изолированостью части кластера (partition tolerance: кластер машин может распаться на две части, обе части будут работать и смогут без проблем объединиться в будущем).

Riak накладыват больше условий на разработку, но обеспечивает масштабируемость и надежность данных при работе с большим объемом информации. Статья опишет, как «обойти» ограничения Riak при разработке типичных web приложений.
Читать дальше →
Всего голосов 20: ↑19 и ↓1 +18
Просмотры3.2K
Комментарии 5

Почему нужно 1000 раз подумать, прежде чем использовать noSQL

Высокая производительностьNoSQL
Зачем я пишу эту статью? Во-первых я хотел бы внести свой вклад в понимание людьми сути nosql и того, почему выбирать такой тип хранилища нужно осознанно. Во-вторых, я буду рад встретить единомышленников, противников и, возможно, подискутировать. А если Вам понравилась эта статья, то буду рад услышать вопросы, которые можно раскрыть более подробно в новых статьях:)

Несмотря на то, что nosql решений сейчас тьма, люди неохотно переходят на новые типы хранилищ. Правильно ли это? На мой взгляд – да. И я постараюсь сказать почему, на примере разных nosql хранилищ, которые встретились на моём профессиональном пути.
Читать дальше →
Всего голосов 153: ↑131 и ↓22 +109
Просмотры78.4K
Комментарии 130

Разработка и тестирование на открытых технологиях в облаке на примере Node.js, Riak, Ruby on Rails и десятков других

MicrosoftOpen sourceТестирование IT-систем
Tutorial
image

Уважаемые разработчики и тестировщики программного обеспечения! Предлагаем вашему вниманию цикл статей на тему организации тестирования и разработки приложений в облачном окружении. В этот цикл входят следующие статьи:

  1. Бесплатные мощности Windows Azure для подписчиков MSDN: как активировать и начать использовать?
  2. Разработка и тестирование приложений в облачном окружении Windows Azure
  3. Популярные сценарии разработки и тестирования в облаке
  4. Разработка и тестирование на открытых технологиях в облаке на примере Node.js, Riak, Ruby on Rails и десятков других

В этой статье мы рассмотрим возможности по разработке и тестированию приложений построенных на открытых технологиях и операционной системе Linux в облаке Windows Azure. В частности, рассмотрим работу с тестовым окружением технологий Riak и Erlang, Node.js, Ruby on Rails.
Читать дальше →
Всего голосов 24: ↑17 и ↓7 +10
Просмотры5.4K
Комментарии 2

Riak и Riak Search Yokozuna: Первое знакомство

Erlang/OTPNoSQLРаспределённые системы
Из песочницы
Tutorial


В статье в ознакомительных целях рассматривается процесс создания простого хранилища простых текстовых документов на базе Riak версии 2.1.1 и организация поиска по ним с помощью Riak Search (Yokozuna). В качестве клиентской библиотеки используется официальный клиент для Erlang.

Для начала представим, что у нас есть огромное количество таких документов:
  • title — заголовок;
  • body — содержимое;
  • tags — тэги;
  • created_at — время создания;
  • smiles — количество смайликов (плюсиков, лайков, как хотите)

и огромное количество пользователей, желающих их изменять. Кому интересно, начнём.
Читать дальше →
Всего голосов 13: ↑13 и ↓0 +13
Просмотры7.5K
Комментарии 0

Вероятность потери данных в больших кластерах

IT-инфраструктураСерверное администрированиеАдминистрирование баз данныхХранение данныхХранилища данных
Перевод
В этой статье используется MathJax для рендеринга математических формул. Нужно включить JavaScript, чтобы MathJax заработал.

Многие распределённые системы хранения (в том числе Cassandra, Riak, HDFS, MongoDB, Kafka, …) используют репликацию для сохранности данных. Их обычно разворачивают в конфигурации «просто пачка дисков» (Just a bunch of disks, JBOD) — вот так, без всякого RAID для обработки сбоев. Если один из дисков в ноде отказывает, то данные этого диска просто теряются. Чтобы предотвратить безвозвратную потерю данных, СУБД хранит копию (реплику) данных где-то на дисках в другой ноде.

Самым распространённым фактором репликации является 3 — это значит, что база данных хранит три копии каждого фрагмента данных на разных дисках, подключенных к трём разным компьютерам. Объяснение этому примерно такое: диски выходят из строя редко. Если диск вышел из строя, то есть время заменить его, и в это время у вас ещё две копии, с которых можно восстановить данные на новый диск. Риск выхода из строя второго диска, пока вы восстанавливаете первый, достаточно низок, а вероятность смерти всех трёх дисков одновременно настолько мала, что более вероятно погибнуть от попадания астероида.
Читать дальше →
Всего голосов 13: ↑13 и ↓0 +13
Просмотры8.7K
Комментарии 14

CRDT: Conflict-free Replicated Data Types

ПрограммированиеАнализ и проектирование системАлгоритмыМатематикаРаспределённые системы

Как считать хиты страницы google.com? А как хранить счётчик лайков очень популярных пользователей? В этой статье предлагается рассмотреть решение этих задач с помощью CRDT (Conflict-free Replicated Data Types, что по-русски переводится примерно как Бесконфликтные реплицированные типы данных), а в более общем случае — задачи синхронизации реплик в распределённой системе с несколькими ведущими узлами.
Читать дальше →
Всего голосов 20: ↑19 и ↓1 +18
Просмотры20.5K
Комментарии 14

Как мы мигрировали базу данных из Redis и Riak KV в PostgreSQL. Часть 1: процесс

MiroPostgreSQLАдминистрирование баз данных
Это первая часть статьи, в которой я расскажу о том, как мы построили процесс работы над большим проектом по миграции БД: про безопасные эксперименты, командное планирование и кросс-командное взаимодействие. В следующих статьях подробней расскажу про технические проблемы, которые мы решали: про масштабирование и отказоустойчивость PostgreSQL и нагрузочное тестирование.



Долгое время основной базой данных в Miro (экс-RealtimeBoard) был Redis. Мы хранили в нём всю основную информацию: данные о пользователях, аккаунтах, досках и т.д. Всё работало быстро, но мы столкнулись с рядом проблем.

Проблемы с Redis

  1. Зависимость от сетевой задержки. Сейчас в нашем облаке она составляет порядка 20 мск, но при её увеличении приложение начнёт работать очень медленно.
  2. Отсутствие индексов, которые нужны нам на уровне бизнес-логики. Их самостоятельная реализация может усложнить бизнес-логику и привести к неконсистентности данных.
  3. Сложность кода также усложняет обеспечение консистентности данных.
  4. Ресурсоёмкость запросов с выборками.

Эти проблемы вместе с ростом количества данных на серверах послужили причиной для миграции БД.
Читать дальше →
Всего голосов 19: ↑19 и ↓0 +19
Просмотры6.9K
Комментарии 27

Riak Cloud Storage. Часть 1. Настройка Riak KV

NoSQLАдминистрирование баз данных
Из песочницы
Tutorial
Riak CS (Cloud Storage) – лёгкое в использовании программное обеспечение для организации хранилища объектов, работающее поверх Riak KV. Riak (KV) это распределённая NoSQL база данных типа «ключ-значение(key-value)». Riak CS спроектирована так, чтобы обеспечить простоту, доступность, распределённость облачного хранилища любого масштаба, и может использоваться для построения облачных архитектур — как публичных, так и частных — или как инфраструктурного хранилища для высоко нагруженных приложений и сервисов. Riak CS API совместим с Amazon S3 и поддерживает возможность получения отчётов по различным ситуациям.

image

Данная статья это вольный перевод официального руководства по системе Riak CS версии 2.1.1

В системе хранения Riak CS, три компонента работают совместно друг с другом, что означает обязательную настройку каждого компонента для работы с другими компонентами:

  • Riak (KV) – система баз данных, которая действует как конечная система.
  • Riak CS — слой облачного хранилища поверх Riak, которая предоставляет хранение и возможности API, хранит файлы и метаданные в Riak, и передаёт их затем конечным пользователям.
  • Stanchion — управляет запросами с участием глобально уникальных сущностей, такими как бакеты и пользователями в экземпляре Riak. Например, создание пользователей, создание или удаление бакетов.

Дополнительно вы так же можете настроить S3 клиент для использовании в обмене сообщениями с Riak CS системой.
Читать дальше →
Всего голосов 6: ↑6 и ↓0 +6
Просмотры976
Комментарии 0

Riak Cloud Storage. Часть 2. Настройка компонента Riak CS

NoSQLАдминистрирование баз данных
Tutorial
В этой статье мы продолжим настройку отдельных компонентов системы Riak Cloud Storage, а именно компонента Riak CS.

image

Данная статья это продолжение вольных переводов официального руководства по системе Riak CS 2.1.1
Часть 1. Настройка Riak KV
Часть 3. Stanchion, Proxy и балансировка нагрузки, клиент S3
С целью обеспечить корректную работу компонента Riak CS важно знать как подключаться к Riak KV. Узел Riak CS обычно запускается на том же сервере, что и соответствующий ему узел Riak KV. Это означает, что изменения будут необходимы только в том случае, если Riak настроен с использованием параметров, отличных от настроек по умолчанию.
Читать дальше →
Рейтинг 0
Просмотры311
Комментарии 0

Riak Cloud Storage. Часть 3. Stanchion, Proxy и балансировка нагрузки, клиент S3

NoSQLАдминистрирование баз данных
Tutorial
image

В этой статье мы завершим настройку компонентов системы Riak Cloud Storage.

Данная статья это завершение серии вольных переводов официального руководства по системе Riak CS 2.1.1
Часть 1. Настройка Riak KV
Часть 2. Настройка компонента Riak CS
Читать дальше →
Рейтинг 0
Просмотры612
Комментарии 0