Я использую базу данных Cassandra с драйвером datastax. Мне нужно сделать пакетное чтение из Кассандры, что-то порядка 2000 строк. Мой пример использования похож: я получаю список идентификаторов в моем запросе, и эти идентификаторы являются моими ключами разделения в Cassandra. Я хочу знать, является ли хорошей идеей создавать 2000 потоков и получать данные из Cassandra параллельно (в этом случае чтение данных будет эффективным, поскольку оно относится только к одному узлу), или можно определить способ группировки идентификаторов, которые жить в том же узле, чтобы я мог оптимизировать чтение (теперь в этом случае мне нужно создавать меньше потоков и меньше накладных расходов на Cassandra). Пожалуйста, дайте мне знать, могу ли я обеспечить пакетное чтение эффективным способом, кроме нереста нескольких потоков. Благодаря! PS: Данные, возвращаемые из Кассандры, не настолько велики, чтобы вызвать OOM.Расположение узла раздела cassandra
ответ
возможно выяснить путь к группе идентификаторов, которые живут в одном узле
Да, вы можете get Token Ranges для Кассандры кластера и check occurrence for tokens для вас идентификаторами в диапазоне, а затем группа идентификаторы узлов.
В дополнении:
Там нет никакой необходимости порождать много потоков, datastax драйвер обеспечивает asynchronous api, мы используем его в нашем проекте, чтобы выполнить много запросов параллельно, и она работает достаточно хорошо, но не отлично от исполнения точка зрения.
Необходимость выполнения тысяч запросов на чтение данных указывает на неподходящую модель данных. Вы должны внедрить модель данных вокруг запросов, чтобы минимизировать количество запросов, чтобы иметь хорошую производительность.
Обновлено:
Я полагаю, вы можете использовать метод Metadata.newToken вычислить маркер на стороне водителя или непосредственно получить точные копии с Metadata.getReplicas для данного ключа секционирования. Но перед этим serialize the partition key в соответствии с его типом и протокольной версией
- 1. Cassandra: создание ключа раздела
- 2. Ключ раздела в Cassandra
- 3. Cassandra: выбирая ключ раздела
- 4. расположение заголовка раздела в exe
- 5. Размер и производительность раздела Cassandra?
- 6. Почему Cassandra меняет ключ раздела?
- 7. Ключ раздела только в Cassandra
- 8. Расположение SceneKit узла
- 9. Cassandra: Удаление узла
- 10. Установка одного узла Cassandra
- 11. Как изменить расположение раздела UITableViewCell на ответвление
- 12. Cassandra - Удаление узла из кластера
- 13. Cassandra: ремонт инструмента подвесного узла
- 14. ошибка связи одного узла cassandra
- 15. Методы проверки синхронизации узла Cassandra
- 16. Фактическое хранение Загрузка узла Cassandra
- 17. Cassandra два узла с резервированием
- 18. Извлечь данные раздела Cassandra в Apache Spark
- 19. spark-cassandra-connector на лимит раздела
- 20. ключ раздела в cassandra, сделать поле невидимым
- 21. SparkSQL ограничивает запросы диапазонами ключей раздела Cassandra
- 22. Spark Cassandra Запрос коннектора ключом раздела
- 23. Как работает токен в разделе раздела cassandra?
- 24. Перемещение данных из одного узла Cassandra в многоуровневый экземпляр Cassandra
- 25. Переместить расположение узла в PyQt QTreeWidget
- 26. Сообщения об ошибках при запуске узла Cassandra
- 27. Cassandra: добавление узла занимает слишком много времени.
- 28. Добавление нового узла в кластер Cassandra
- 29. Подключение к кластеру Cassandra вместо определенного узла
- 30. Вставить BigInt в cassandra из узла js
Спасибо, что помогли! Вы знаете, как я могу вычислить токен для данного ключа секционирования с помощью драйвера dataStax. В настоящее время я делаю что-то вроде 'select token (key) из demotable, где key = 1231', чтобы определить значение токена для данного ключа секционирования. И я думаю, что делать это плохо, так как снова это происходит на сервере Cassandra много раз. Я думаю, что должен быть способ получить правильный алгоритм хэширования, открытый через данные stax, которые получают работу. – Coder
@Coder, я обновил свой ответ для получения подробной информации о вычислении токенов на стороне драйвера –