Да, например, в MongoDB у вас нет объединений, поскольку это нереляционный , поэтому он меняет способ хранения и просмотра данных.
КакMongoDB является нереляционной (без объединений), ссылки («внешние ключи») между документами обычно разрешаются на стороне клиента дополнительными запросами к серверу.Для ссылок в MongoDB распространены два соглашения: во-первых, простые ручные ссылки, а во-вторых, стандарт DBRef, который многие драйверы поддерживают явно.
Кажется, что консенсус заключается в денормализации и дублировании для ускорения чтения, чтобы избежать затрат на объединение распределенных данных в целом, с логикой объединения и слияния, выполненной на уровне приложения.
Относительно того, является ли это абсолютным требованием для денормализации базы данных, яне уверен (другие члены SO могут, вероятно, просветить нас).Но я думаю, что база данных должна быть смоделирована с учетом этих «ограничений» в уме наряду с хорошим изучением того, как данные будут запрашиваться .Это должно дать наименьшее полное сопротивление процессу.
См. Также:
Теория проектирования баз данных Bigtable
GAE - Как жить без объединений?
Любая API-оболочка, которая позволяет писать код один раз и может использоваться для движка приложений Google BigTable и nosql?(что-то вроде Hibernate)
JDO не зависит от хранилища данных , так что он может просто предоставить то, что вы хотите в некоторой степени.
Кажется, есть много недавнихпроекты для использования JDO и JPA с продуктами "NoSQL".
См .:
Datanucleus-Cassandra
DataNucleus-Cassandra-Plugin