Дубликаты
Я не очень разбираюсь в Google Bigtable, но мне интересно, какая разница между Google Bigtable и реляционными базами данных, такими как MySQL. Каковы ограничения обоих?
Дубликаты
Я не очень разбираюсь в Google Bigtable, но мне интересно, какая разница между Google Bigtable и реляционными базами данных, такими как MySQL. Каковы ограничения обоих?
Bigtable - это изобретение Google, чтобы иметь дело с огромным количеством информации, которую компания регулярно занимается. Набор данных Bigtable может вырасти до огромного размера (много петабайт) с хранилищем, распределенным на большом количестве серверов. Системы, использующие Bigtable, включают такие проекты, как веб-индекс Google и Google Earth.
В соответствии с технический документ Google по теме:
A Bigtable - это редкая, распределенная, постоянная многомерная сортированная карта. Карта индексируется ключом строки, столбцом и меткой времени; каждое значение на карте представляет собой неинтерпретируемый массив байтов.
Внутренняя механика Bigtable по сравнению, скажем, с MySQL, настолько разнородна, что затрудняет сравнение, и намеченные цели также не слишком много перекрываются. Но вы можете думать о Bigtable немного как о базе данных из одной таблицы. Представьте, например, трудности, с которыми вы столкнулись, если бы попытались внедрить всю систему поиска Google в базе данных MySQL - Bigtable был создан для решения этих проблем.
Биллигатные наборы данных могут запрашиваться у таких сервисов, как AppEngine, с использованием языка GQL ( "gee-kwal" ), который основан на подмножестве SQL. Заметно отсутствует в GQL какая-либо команда JOIN
. Из-за распределенного характера базы данных Bigtable выполнение соединения между двумя таблицами было бы ужасно неэффективным. Вместо этого программист должен реализовать такую логику в своем приложении или разработать свое приложение, чтобы оно не нуждалось в нем.
Google BigTable и другие подобные проекты (например: CouchDB, HBase) - это системы баз данных, которые ориентированы так, что данные в основном denormalized (т.е. дублируются и группируются).
Основные преимущества: - Операции объединения менее дороги из-за денормализации - Репликация/распределение данных дешевле из-за независимости данных (т.е. Если вы хотите распространять данные по двум узлам, у вас, вероятно, не будет проблемы с сущностью в одном node и другом связанном объекте в другом node, потому что схожие данные сгруппированы)
Этот вид систем указан для приложений, которым необходимо достичь оптимального масштаба (т.е. вы добавляете больше узлов в систему, а производительность увеличивается пропорционально). В ORM, таком как MySQL или Oracle, при добавлении большего количества узлов, если вы присоединитесь к двум таблицам, которые не находятся в одном и том же node, стоимость соединения выше. Это становится важным, когда вы имеете дело с большими объемами.
ORM хороши из-за богатства модели хранения (таблицы, объединения, fks). Распределенные базы данных хороши из-за простоты масштабирования.