Apache Cassandra Чтение объяснений - PullRequest
0 голосов
/ 09 октября 2018

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

Вставленная запись - это временные ряды датчиков.

Я хотел бы попробовать apache cassandra вместо perconaкластер, но я не понимаю, как работает чтение данных.Я ищу что-то, что способно разделить запрос по всем узлам и параллельно читать из более чем одного узла.

Я знаю, что у шардинга Кассандры могут быть реплики шардов.Если у меня 5 узлов и я установил коэффициент реплики 5, будет ли чтение в 5 раз быстрее?

Ответы [ 3 ]

0 голосов
/ 09 октября 2018

Если у меня 5 узлов и я установил коэффициент реплики 5, будет ли чтение в 5 раз быстрее?

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

0 голосов
/ 09 октября 2018

Лучший способ прочитать cassandra - убедиться, что каждый сгенерированный вами запрос соответствует разделу cassandra.Это означает, что первая часть вашего простого первичного (x, y, z) ключа и первая скобка составного ((x, y), z) первичного ключа предоставляются в качестве параметров запроса.Это восходит к принципу построения таблиц cassandra, который заключается в том, что дизайн таблицы соответствует вашим запросам.

Репликация - это копии данных, а разбиение - это распространение данных.https://docs.datastax.com/en/cassandra/3.0/cassandra/architecture/archPartitionerAbout.html

некоторые ссылки о моделировании кассандры, https://www.datastax.com/dev/blog/the-most-important-thing-to-know-in-cassandra-data-modeling-the-primary-key

https://www.datastax.com/dev/blog/basic-rules-of-cassandra-data-modeling

рекомендуется иметь разделы размером 100 МБ, но не обязательно.

Вы можете использовать утилиту cassandra-стресс, чтобы посмотреть отчет о том, как выглядят ваши чтения и записи.

0 голосов
/ 09 октября 2018

Путь чтения Cassandra

Запрос чтения, инициированный клиентом, отправляется на узел координатора, который проверяет разделитель, какие реплики отвечают за данные, и если уровень согласованности равенвстретились.

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

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

На узле выполняется несколько шагов: проверка кэша строк, проверка мембайлов, проверка sstables.Дополнительная информация: Как считываются данные? и ReadPathForUsers .

Запросы балансировки нагрузки

Поскольку у вас есть коэффициент репликацииэто равно количеству узлов, это означает, что каждый узел будет содержать все ваши данные.Таким образом, когда узел-координатор получит запрос на чтение, он получит его от себя.В частности (если вы используете уровень согласованности LOCAL_ONE, запрос будет довольно быстрым).

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

...