BigTable против noSQL - PullRequest
       14

BigTable против noSQL

3 голосов
/ 16 июля 2010
  1. Могу ли я знать, что в 'nosql' есть ограничение, такое же как в bigtable, где мы должны 'денормализовать' нашу таблицу / сущность?

  2. какая-либо обертка API, которая позволяет писать код один раз и может использоваться для движка приложений Google bigtable и nosql?(что-то вроде hiberanate)

Ответы [ 2 ]

3 голосов
/ 16 июля 2010

Да, например, в MongoDB у вас нет объединений, поскольку это нереляционный , поэтому он меняет способ хранения и просмотра данных.

КакMongoDB является нереляционной (без объединений), ссылки («внешние ключи») между документами обычно разрешаются на стороне клиента дополнительными запросами к серверу.Для ссылок в MongoDB распространены два соглашения: во-первых, простые ручные ссылки, а во-вторых, стандарт DBRef, который многие драйверы поддерживают явно.

Кажется, что консенсус заключается в денормализации и дублировании для ускорения чтения, чтобы избежать затрат на объединение распределенных данных в целом, с логикой объединения и слияния, выполненной на уровне приложения.

Относительно того, является ли это абсолютным требованием для денормализации базы данных, яне уверен (другие члены SO могут, вероятно, просветить нас).Но я думаю, что база данных должна быть смоделирована с учетом этих «ограничений» в уме наряду с хорошим изучением того, как данные будут запрашиваться .Это должно дать наименьшее полное сопротивление процессу.

См. Также:

Теория проектирования баз данных Bigtable

GAE - Как жить без объединений?


Любая API-оболочка, которая позволяет писать код один раз и может использоваться для движка приложений Google BigTable и nosql?(что-то вроде Hibernate)

JDO не зависит от хранилища данных , так что он может просто предоставить то, что вы хотите в некоторой степени.

Кажется, есть много недавнихпроекты для использования JDO и JPA с продуктами "NoSQL".

См .:

Datanucleus-Cassandra

DataNucleus-Cassandra-Plugin

2 голосов
/ 20 июля 2010

Любая API-оболочка, которая позволяет писать код один раз и может использоваться для движка приложений Google BigTable и nosql?(что-то вроде Hibernate)

Хотя библиотеки абстракций определенно помогают переносимости, вы должны учитывать конкретную платформу, на которой вы работаете.Если вы собираетесь использовать Google App Engine, вы должны знать о понесенных затратах на запуск, присущих дополнительным библиотекам абстракций .

Вы должны взвесить все за и против, используя что-то вроде JDO или JPA.Также взгляните на библиотеку Objectify , которая предлагает более родной интерфейс, который имеет обратную связь с хранилищем данных App Engine.

...