Могу ли я создать индекс на картах в базе данных Scylla?

#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, в БД вместе с столбчатыми данными