Как определить раздел cassandra для данного ПК на клиенте? - PullRequest
0 голосов
/ 08 июня 2018

Я пытаюсь Cassandra заменить mysql для большого набора данных (2,5 ТБ / 5 миллиардов строк), который я не могу масштабировать больше на одном сервере.

Я вставляю / обновляю несколько миллионовстроки каждый час.В настоящее время я вставляю и запрашиваю один за другим в cassandra, потому что я не знаю, в каком разделе есть данные, и группировка их кажется медленнее.Но один за другим я не могу сравниться со скоростью одного сервера MySQL даже с 3 узлами Кассандры.

В MySQL я могу выполнять пакетную обработку, потому что я знаю, что она хранит все на одном сервере.Возможно ли, используя значение первичного ключа, определить раздел на стороне клиента, чтобы я мог более эффективно группировать запросы с помощью BATCH или SELECT..IN?

Я имею в виду, учитывая группу PKкак 1, 2, 3, 4, 5, 6 ... и N серверов, я хотел бы знать, что, скажем, строки 1, 3, 5 находятся в одном разделе, поэтому я могу группировать их в своих запросах.Это возможно с кассандрой?

1 Ответ

0 голосов
/ 08 июня 2018

Если вы выполняете запросы с WHERE для ключа раздела, то большую часть времени драйверы позаботятся о наиболее эффективной маршрутизации данных в реплики, содержащие эти данные (только если вы не изменили политику балансировки нагрузки - по умолчанию все драйверы используют так называемую политику TokenAware), вычисляя токен для данного ключа раздела и находя реплики для него.

Если вам нужно получить несколько записей, выполнитеN запросов параллельно через асинхронный API и результаты слияния на стороне клиента будут более эффективными, чем выполнение запроса с IN.

PS В Cassandra BATCH имеет немного другую семантику, чем в реляционных базах данных.Пожалуйста, проверьте эту документацию для рекомендуемых образцов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...