Rest API Cassandra РАЗРЕШИТЬ ФИЛЬТРАЦИЯ
У меня есть база данных DataStax Astra, и у меня есть этот пример того, как получить пользователя с определенным именем пользователя:
curl --request GET \
--url https://${ASTRA_DB_ID}-${ASTRA_DB_REGION}.apps.astra.datastax.com/api/rest/v2/keyspaces/${ASTRA_DB_KEYSPACE}/user?where=\{"user_username":\{"$eq":"'+*username_value_here*+'"\}\}' \
--header "x-cassandra-token: ${ASTRA_DB_APPLICATION_TOKEN}"
И из-за Кассандры у меня нет опции РАЗРЕШИТЬ ФИЛЬТРИРОВАНИЕ:
{"description":"Bad request: org.apache.cassandra.stargate.exceptions.InvalidRequestException: Cannot execute this query as it might involve data filtering and thus may have unpredictable performance. If you want to execute this query despite the performance unpredictability, use ALLOW FILTERING","code":400}
Я нигде не могу найти, как включить эту опцию в команде curl, поэтому вопрос в том, как я могу это написать (если это возможно) или есть лучшие альтернативы. Любая помощь приветствуется.
1 ответ
REST API в настоящее время не поддерживает
ALLOW FILTERING
но у вас есть другие варианты.
- Если имена пользователей в вашей системе уникальны и вы можете изменить модель данных, вы можете создать ключ раздела. Это позволит вам выполнять запросы по этому столбцу без необходимости фильтрации.
- Другой вариант, если вы не можете изменить модель данных, — добавить индекс на
user_username
. Индекс позволит вам сохранить существующие шаблоны доступа, а также позволит выполнять запросы по имени пользователя.