Подтвердить что ты не робот

Google Bigtable против реляционной базы данных

Дубликаты

Я не очень разбираюсь в Google Bigtable, но мне интересно, какая разница между Google Bigtable и реляционными базами данных, такими как MySQL. Каковы ограничения обоих?

4b9b3361

Ответ 1

Bigtable - это изобретение Google, чтобы иметь дело с огромным количеством информации, которую компания регулярно занимается. Набор данных Bigtable может вырасти до огромного размера (много петабайт) с хранилищем, распределенным на большом количестве серверов. Системы, использующие Bigtable, включают такие проекты, как веб-индекс Google и Google Earth.

В соответствии с технический документ Google по теме:

A Bigtable - это редкая, распределенная, постоянная многомерная сортированная карта. Карта индексируется ключом строки, столбцом и меткой времени; каждое значение на карте представляет собой неинтерпретируемый массив байтов.

Внутренняя механика Bigtable по сравнению, скажем, с MySQL, настолько разнородна, что затрудняет сравнение, и намеченные цели также не слишком много перекрываются. Но вы можете думать о Bigtable немного как о базе данных из одной таблицы. Представьте, например, трудности, с которыми вы столкнулись, если бы попытались внедрить всю систему поиска Google в базе данных MySQL - Bigtable был создан для решения этих проблем.

Биллигатные наборы данных могут запрашиваться у таких сервисов, как AppEngine, с использованием языка GQL ( "gee-kwal" ), который основан на подмножестве SQL. Заметно отсутствует в GQL какая-либо команда JOIN. Из-за распределенного характера базы данных Bigtable выполнение соединения между двумя таблицами было бы ужасно неэффективным. Вместо этого программист должен реализовать такую ​​логику в своем приложении или разработать свое приложение, чтобы оно не нуждалось в нем.

Ответ 2

Google BigTable и другие подобные проекты (например: CouchDB, HBase) - это системы баз данных, которые ориентированы так, что данные в основном denormalized (т.е. дублируются и группируются).

Основные преимущества:  - Операции объединения менее дороги из-за денормализации  - Репликация/распределение данных дешевле из-за независимости данных (т.е. Если вы хотите распространять данные по двум узлам, у вас, вероятно, не будет проблемы с сущностью в одном node и другом связанном объекте в другом node, потому что схожие данные сгруппированы)

Этот вид систем указан для приложений, которым необходимо достичь оптимального масштаба (т.е. вы добавляете больше узлов в систему, а производительность увеличивается пропорционально). В ORM, таком как MySQL или Oracle, при добавлении большего количества узлов, если вы присоединитесь к двум таблицам, которые не находятся в одном и том же node, стоимость соединения выше. Это становится важным, когда вы имеете дело с большими объемами.

ORM хороши из-за богатства модели хранения (таблицы, объединения, fks). Распределенные базы данных хороши из-за простоты масштабирования.