Вы используете Python или Java? Подробный ответ будет немного зависеть от того, какой API вы используете.
Я уверен, что ваши ключи будут расти бесконечно, это не лучший план. (хотя это может быть хорошим тестовым примером для API приложений, хотя:)
Я думаю, что решение будет состоять в том, чтобы отделить информацию о группе сущностей от информации, связывающей сообщения. Чтобы выполнять транзакции в потоке / разговоре / цепочке / чем угодно, все ваши сообщения должны быть в одной группе сущностей. Однако они не обязательно должны находиться в иерархии, которая точно соответствует структуре связей между сообщениями. Вы должны явно установить родителя (группу сущностей) для всех ваших сущностей сообщений одинаковыми в плоской структуре. Таким образом, каждая сущность будет родственной по отношению к другим, в смысле групп сущностей. Вам также понадобится поле в вашей сущности для ссылки на следующее (и / или предыдущее) сообщение. Таким образом, у вас все еще был бы связанный список (или дерево или что-то еще) в терминах ссылок «предыдущего сообщения».
И в Python, и в Java есть методы для создания сущности с определенной родителем / группой сущностей. (На самом деле, вы даже можете указать несуществующую сущность как корень иерархии группы сущностей!)
Теперь ключ каждого сообщения будет иметь фиксированную длину, поэтому ваши ссылочные свойства "next" и "previous" будут хорошими и безопасными от превышения некоторого ограничения длины ключа.