Последовательные идентификаторы строк в БД, ориентированных на столбцы (HBase, Cassandra)? - PullRequest
3 голосов
/ 13 июля 2010

Я видел два противоречивых совета, когда речь идет о разработке идентификаторов строк в HBase (особенно, но я думаю, что это относится и к Cassandra.)

  1. Группируйте ключи, которые вы 'Я буду часто собираться вместе, чтобы воспользоваться преимуществами локальности данных.(White, Hadoop: полное руководство, и я помню, что видел его на сайте HBase, но не могу его найти ...)
  2. Распределение ключей вокруг, чтобы можно было распределить работу по нескольким машинам (Twitter, Pig и HBase на Twitter слайд 14)

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

1 Ответ

2 голосов
/ 13 июля 2010

В HBase таблица разбивается на регионы путем разделения пространства ключей, которое сортируется лексикографически. Каждый регион таблицы принадлежит одному серверу регионов, поэтому все операции чтения и записи обрабатываются этим сервером (что обеспечивает надежную согласованность). Это означает, что если все ваши операции чтения или записи сконцентрированы на небольшом диапазоне вашего пространства ключей, вы сможете масштабировать только то, что может обрабатывать один сервер региона. Например, если ваши данные представляют собой временные ряды и снабжены меткой времени, тогда все записи идут в последнюю область таблицы, и вы будете ограничены записью со скоростью, которую может обрабатывать один сервер.

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

...