Вопрос новичка здесь.
Согласно https://github.com/balderdashy/waterline#indexing, вы не можете использовать строку ' тип данных в качестве индекса в Waterline из-за проблем с нечувствительностью к регистру:
В настоящее время существует проблема с добавлением индексов к строковым полям. Поскольку Waterline выполняет запросы без учета регистра, мы не можем использовать индекс для строкового атрибута. Обсуждаются некоторые обходные пути, но пока ничего не реализовано. Это будет обновлено в ближайшем будущем, чтобы полностью поддерживать индексы для строк.
Меня беспокоят следующие проблемы: производительность; ассоциации с использованием «строковых» ключей невозможны.
Мои вопросы:
- Действительно ли он индексирует строки, если ему сказали это сделать? Если да, то на чем основан индекс: а) исходная строка как есть; б) нижний регистр строки; c) ЗАГЛАВНЫМИ буквами строки?
- Если он вообще не индексирует строки, как подразумевается, если вы можете предположить, что «не может использовать» означает «не создает», значит ли это, что бэкэнд Waterline/базы данных выполняет неиндексированное извлечение запись за записью и сравнить? Кажется крайне неэффективным, если это так.
- Затрагиваются ли оба типа данных «строка» и «текст» или я могу использовать «текст», и в этом случае на вопрос № 2 также необходимо ответить для типов данных «текст».
- Если вы действительно не можете использовать «строку», что мне следует использовать вместо внешних ключей? Целочисленный идентификатор и таблица соединений для привязки другой таблицы со строковыми значениями? (Кажется расточительным, но пригодным для чего-то вроде списка ключевых слов).
- Если и когда эта «проблема» будет решена?
- Какие и/или где «обсуждаются обходные пути»?
- Есть ли лучший ORM, на который я должен обратить внимание, или просто использовать собственные методы SQL (к вашему сведению, я использую PostgreSQL).
Я надеялся получить ответ здесь: «строка» может быть проиндексирована, но запросы к типам данных «строка» выполняются с использованием нижнего регистра (или верхнего регистра, но дайте мне знать). Таким образом, у меня может быть «строковый» ключ, если регистр правильный.
Кроме того, я предполагаю, что «строка» и «текст» фактически являются синонимами в Waterline, по крайней мере, вне родного контекста базы данных.
Заранее спасибо за любую помощь здесь.