SQL не справляется с 3+ переходами. GraphDB справляются. Представьте, что вы находите все аккаунты в пределах 3 переходов от подозрительной транзакции. Или связываете фрагментированные записи клиентов между системами по общим электронным адресам и номерам телефонов. Это запросы на обход графа. SQL может обрабатывать отношения, но не глубину. Конечно, вы можете написать рекурсивные CTE и самосоединения. Это работает на 1-2 переходах. Но если углубиться, происходит две вещи: - Запрос становится нечитаемым - И производительность падает Каждый переход добавляет еще одно самосоединение. На 5-6 переходах вы смотрите на запросы, которые выполняются в течение минут и разваливаются под нагрузкой. Тот же запрос в Cypher: 𝗠𝗔𝗧𝗖𝗛 (𝘁:𝗧𝗿𝗮𝗻𝘀𝗮𝗰𝘁𝗶𝗼𝗻 {𝗶𝗱: '𝗧𝗫𝗡-𝟬𝟬𝟭'})-[:𝗜𝗡𝗩𝗢𝗟𝗩𝗘𝗦*𝟭..𝟯]-(𝗮:𝗔𝗰𝗰𝗼𝘂𝗻𝘁) 𝗥𝗘𝗧𝗨𝗥𝗡 𝗗𝗜𝗦𝗧𝗜𝗡𝗖𝗧 𝗮.𝗻𝗮𝗺𝗲, 𝗮.𝗽𝗵𝗼𝗻𝗲 3 строки. Читается как вопрос, который вы задаете. Масштабируется на любую глубину. Для этого и созданы графовые базы данных. FalkorDB — это то, о чем стоит знать. Это с открытым исходным кодом. И он использует другой архитектурный подход по сравнению с большинством графовых БД. Большинство графовых баз данных преследуют указатели от узла к узлу во время обхода. FalkorDB этого не делает. Он построен на GraphBLAS, фреймворке линейной алгебры, который представляет операции графа как разреженные матричные вычисления. Каждый переход становится оптимизированной матричной операцией. Результат: - Лучшее поведение кэша - Параллельные вычисления по переходам...