RedisGraph, модель графической базы данных для Redis, была обновлена. Новая редакция поддерживает полнотекстовый поиск, ответы на запросы в виде полного графа и улучшения языка запросов Cypher.
RedisGraph использует другой подход к другим базам данных графов, переводя язык запросов Cypher в матричные операции, выполняемые с помощью движка на основе GraphBLAS. По словам разработчиков, используя разреженные матрицы для представления графиков и GraphBLAS для их обработки, RedisGraph управляет и обрабатывает данные графов быстрее, чем другие графические базы данных.
RedisGraph основан на модели графа свойств, и его узлы и отношения (вершины и ребра) могут иметь атрибуты, а узлы могут быть помечены. В качестве языка запросов он использует Cypher, а запросы Cypher переводятся в выражения линейной алгебры. Cypher — это декларативный язык, основанный на SQL, для визуального описания шаблонов в графах с использованием синтаксиса ascii-art.
Новым в этом выпуске является поддержка полнотекстового поиска по значениям свойств. В Redis 1.6 был добавлен низкоуровневый API, который поддерживает использование RediSearch для вторичного индексирования и полнотекстового поиска, и теперь он полностью включен во все модули. До сих пор поиск по индексу RedisGraph ограничивался точными совпадениями и не допускал префиксов или нечетких совпадений. Также не было возможности использовать два отдельных индекса для данной метки в качестве составных индексов.
Улучшение распространяется на возможность комбинировать возвращаемые узлы с выражением соответствия для дальнейшей уточнения результатов поиска, известной как поиск с помощью графа. Разработчики говорят, что одним из примеров поиска с помощью графов является поиск человека, который связан с человеком определенным количеством степеней разделения. Типичным примером этого является функция поиска в LinkedIn, где люди, которые более тесно связаны с вами, перечислены в верхней части результатов поиска.
В новую версию также был добавлен ответ в виде полного графа, что означает, что запросы могут напрямую возвращать узлы и отношения. Предыдущие выпуски возвращали табличный результат значений свойств, но RedisGraph 2.0 теперь может возвращать узлы, отношения и другие типы данных. Разработчики говорят, что это позволит выполнять отображение графов объектов (OGM), запрашивать подграфы и визуализации, когда принимающему приложению нужны все узлы и их отношения.
В этом выпуске Cypher также был улучшен за счет дополнительных операторов и функций, поддержки простых операторов case, расширенной поддержки слияния, подсчета агрегатов, поддержки именования путей и повторного использования сущностей в сопоставлении с образцом.