Кто-нибудь использовал объектную базу данных с большим объемом данных? - PullRequest
15 голосов
/ 23 марта 2010

Объектные базы данных, такие как MongoDB и db4o, в последнее время получают широкую огласку. Каждый, кто играет с ними, кажется, любит это. Я предполагаю, что они имеют дело с около 640 КБ данных в своих образцах приложений.

Кто-нибудь пытался использовать объектную базу данных с большим объемом данных (скажем, 50 ГБ или более)? Можете ли вы по-прежнему выполнять сложные запросы (например, с экрана поиска)? Как это соотносится с вашей обычной реляционной базой данных?

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

Ответы [ 7 ]

10 голосов
/ 23 марта 2010

Кто-то только что начал работу с 12 терабайтами данных в MongoDB. Самый большой из известных мне до этого был 1 ТБ. Многие люди хранят очень большие объемы данных в Монго.

Важно помнить, что Mongo работает во многом как реляционная база данных: вам нужны правильные индексы, чтобы получить хорошую производительность. Вы можете использовать объяснение () в запросах и связаться с списком пользователей для помощи с этим.

6 голосов
/ 15 мая 2010

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

Со временем у нас было много пользователейкоторый использовал db4o для веб-приложений и с довольно большими объемами данных, приближаясь к сегодняшнему максимальному размеру файла базы данных 256 ГБ (с настроенным размером блока 127 байт).Итак, чтобы ответить на ваш вопрос: да, db4o будет работать с 50 ГБ, но вы не должны планировать использовать его для терабайтов данных (если вы не можете аккуратно разделить ваши данные на несколько баз данных db4o, затраты на установку для одной базы данных незначительны,Вы можете просто позвонить #openFile ())

db4o был приобретен Versant в 2008 году, потому что его возможности (встроенные, низкое потребление ресурсов, легкость) делают его отличным бесплатным продуктом для Versant.база данных объектов высокого класса VOD .VOD масштабируется для огромных объемов данных и работает намного лучше, чем реляционные базы данных.Я думаю, что это будет просто смешок над 50 ГБ.

3 голосов
/ 23 марта 2010

Я наверняка пытался переместить API, который у меня есть, с помощью приложения iphone для переполнения стека, которое я написал некоторое время назад в MongoDB, где оно в настоящее время находится в базе данных MySQL. В необработанном виде дамп SO CC находится в диапазоне нескольких гигабайт, а способ, которым я создавал документы для MongoDB, привел к базе данных 10G +. Можно утверждать, что я не создавал документы хорошо, но я не хотел тратить кучу времени на это.

Одна из самых первых вещей, с которыми вы столкнетесь, если начнете идти по этому пути, - это отсутствие поддержки 32 бит. Конечно, сейчас все движется к 64-битной версии, но просто стоит иметь в виду. Я не думаю, что какая-либо из основных баз данных документов поддерживает подкачку в 32-битном режиме, и это понятно с точки зрения сложности кода.

Для проверки того, что я хотел сделать, я использовал 64-битный экземплярный экземпляр EC2. Второе, с чем я столкнулся, это то, что, несмотря на то, что у этой машины было 7 ГБ памяти, когда физическая память была исчерпана, все шло от быстрого к не очень быстрому. Я не уверен, что у меня не было настроено что-то неправильно в этот момент, потому что отсутствие поддержки 32-битной системы убило то, для чего я хотел это использовать, но я все еще хотел посмотреть, как это выглядело. Загрузка одного и того же дампа данных в MySQL занимает около 2 минут на гораздо менее мощном компьютере, но скрипт, который я использовал для загрузки двух баз данных, работает по-разному, поэтому я не могу сделать хорошее сравнение. Выполнение только подмножества данных в MongoDB было намного быстрее, если это приводило к базе данных, которая была меньше 7G.

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

Недавним ресурсом, который может быть полезен, является визуальное руководство по системам nosql . Есть много вариантов за пределами MongoDB. Я также использовал Redis, но не с такой большой базой данных.

3 голосов
/ 23 марта 2010

Вы должны прочитать Варианты использования MongoDB . Люди, которые просто играют с технологиями, часто просто смотрят на то, как это работает, и не в состоянии понять ограничения. Для правильных видов наборов данных и шаблонов доступа 50 ГБ - ничто для MongoDB, работающего на правильном оборудовании.

Эти нереляционные системы смотрят на компромиссы, сделанные RDBM, и немного их изменяют. В некоторых ситуациях согласованность не так важна, как другие, поэтому эти решения позволяют вам обменять это на что-то другое. В некоторых ситуациях компромисс все еще остается относительно небольшим мс или, возможно, секундами.

Стоит прочитать и о теореме CAP .

3 голосов
/ 23 марта 2010

MongoDB поддерживает SourceForge, The New York Times и несколько других крупных баз данных ...

1 голос
/ 09 июня 2010

Возможно, стоит упомянуть.

Миссия Planck Европейского космического агентства выполняется на базе данных объектов Versant. http://sci.esa.int/science-e/www/object/index.cfm?fobjectid=46951

Это спутник с 74 встроенными датчиками, запущенный в прошлом году, который отображает инфракрасный спектр Вселенной и хранит информацию в модели сегмента карты. В эти дни он получал массу шумихи, потому что производил одни из самых крутых изображений, когда-либо виденных во Вселенной.

Так или иначе, он сгенерировал 25T информации, хранящейся в Versant и реплицированной на 3 континентах. Когда миссия будет завершена в следующем году, это будет в общей сложности 50T

Вероятно, также стоит отметить, что объектные базы данных имеют тенденцию быть намного меньше, чтобы содержать ту же информацию. Это потому, что они действительно нормализованы, нет дублирования данных для объединений, нет пустого пустого пространства столбцов и несколько индексов, а не сотен из них. Вы можете найти общедоступную информацию о тестировании, проведенном ESA для рассмотрения хранения в многостолбцовом формате реляционной базы данных -vs- с использованием подходящей объектной модели и хранения в объектной базе данных Versant. Они обнаружили, что могут сэкономить 75% дискового пространства с помощью Versant.

Вот реализация: http://www.planck.fr/Piodoc/PIOlib_Overview_V1.0.pdf

Здесь говорят о 3T-vs- 12T, найденных в тестировании. http://newscenter.lbl.gov/feature-stories/2008/12/10/cosmic-data/

Также ... есть тесты, которые показывают Версанты на порядок быстрее на аналитической стороне миссии.

Cheers, -Роберт

1 голос
/ 23 марта 2010

Вот несколько тестов на db4o:

http://www.db4o.com/about/productinformation/benchmarks/

Я думаю, что в конечном итоге это зависит от множества факторов, в том числе от сложности данных, но db4o, похоже, наверняка зависит от лучших из них.

...