#json #indexing #scylla
Вопрос:
В базе данных Scylla есть собственный тип карты https://docs.scylladb.com/getting-started/types/#maps Можно ли создать на нем индекс? Так что это было бы похоже на GIN в PostgreSQL.
Ответ №1:
Поскольку maps
это тип коллекции, я думаю, что эта проблема GH в значительной степени суммирует ее и то, что поддерживается (или нет). https://github.com/scylladb/scylla/issues/3654#issuecomment-479639450
Проверки req, упомянутые в выпуске GH:
- запретить ПОЛНЫЕ индексы для незамерзших коллекций
- запретить НЕПОЛНЫЕ индексы для замороженных коллекций
- запретить повторное создание ПОЛНЫХ индексов в одной и той же коллекции
- запретить ссылки на записи замороженной карты в предложении WHERE (разрешать только полные значения карты)
Что у нас есть:
Незамороженные коллекции в настоящее время вообще не поддерживаются с соответствующим сообщением об ошибке, неполные индексы замороженных коллекций также запрещены, повторное создание по умолчанию также запрещено для любого индекса. Кроме того, я думаю, что ссылки на записи замороженной карты в предложении WHERE должны быть разрешены, по крайней мере, с фильтрацией.
Если вы обнаружите какое-либо другое поведение, пожалуйста, сообщите нам об этом и сообщите о проблеме GH.
Комментарии:
1. Спасибо, ТомерСан! Мне не удалось найти документацию, объясняющую разницу между ПОЛНЫМИ и неполными индексами, но, как видно из названия, ПОЛНЫЙ индекс-это именно то, что я ищу, и моя коллекция не заморожена. Учитывая, что ПОЛНЫЙ индекс для таких коллекций не допускается и на них нельзя ссылаться в предложении WHERE, в моем случае это не будет работать. На самом деле кажется, что Сцилла может быть не лучшим выбором, если некоторым требуется хранить документы, подобные JSON, в БД вместе с столбчатыми данными