Обычно сервер базы данных является самой большой, самой дорогой коробкой, которую мы должны покупать, поскольку масштабирование по вертикали является единственным вариантом. Существуют ли базы данных, которые хорошо масштабируются по горизонтали (т.е. Через несколько товарных машин) и каковы ограничения в этом подходе?
Можете ли вы порекомендовать базу данных, которая масштабируется горизонтально?
Ответ 1
Не волнуйтесь, приходят хорошие решения!
Couchdb и Hypertable с открытым исходным кодом и все еще в альфа, но они четко разработаны, чтобы сделать масштабирование по программному обеспечению товара простым. Они работают очень хорошо и могут изменить то, как вы думаете о базах данных.
Кроме того, если вы позволите кому-то сделать раздачу для вас, Google AppEngine и Amazon SimpleDB - чрезвычайно дешевые распределенные службы баз данных, хотя сейчас они оба в бета-версии, поэтому накладываются строгие ограничения.
Ответ 2
Oracle RAC вообще не масштабируется по горизонтали, поскольку все экземпляры Oracle используют одно и то же хранилище данных. Да, с SAN файлами u может получить БД большого размера, но он просто не масштабируется вообще. Другими словами, Oracle RAC по-прежнему является масштабируемым подходом. Таким образом, для масштабирования или горизонтального масштабирования вам необходимо разбить свои данные по функции, что означает размещение разных групп таблиц в разных базах данных; или разбивайте свои данные на таблицу, что означает разделение одной таблицы на несколько подтасов с той же схемой, но хранение в разных базах данных. Таким образом, вы получаете решение для масштабирования. На это много ресурсов. Sharding - это какое-то жужжащее слово в веб-блоге веб-архитектуры веб-сайта. Поскольку Sharding напрямую не поддерживается самой базой данных, вам необходимо создать собственное решение. Но, как я уже сказал, уже много уроков. Для оракула возможна таблица разбиения. Для mysql, проверьте этот вопрос
Ответ 3
Oracle RAC - Real Application Cluster
Это хорошо работает, вы просто добавляете ящики в свой кластер. Вы можете переходить из одной коробки в другую. Это не репликация, все ящики являются частью одной и той же логической единицы.
Это довольно интересно, конечно.
Ответ 4
Существуют такие методы хранения, как JavaSpaces (или коммерческая реализация, такие как Gigaspaces), которые обеспечивают высоко масштабируемый, быстрый и безопасный доступ к объектам.
Существуют также распределенные системы кэширования, такие как memcached, которые предлагают аналогичный подход.
Конечно, ни одна из них не является настоящими базами данных, но они могут работать в сочетании с базами данных, чтобы обеспечить большую горизонтальную масштабируемость, учитывая подходящую архитектуру. Реальная проблема заключается в том, что если вы хотите, чтобы всякая добротность ACID, которая поставляется с базой данных, есть определенные неизбежные штрафы за производительность. Единственный выход - выяснить биты, где вам не нужна ACID, и использовать другие технологии для обслуживания этих битов.
Ответ 5
Oracle RAC - это Rolls-Royce баз данных, позволяющий добавлять дополнительные аппаратные узлы относительно легко и отказоустойчиво.
Тем не менее, затраты на ваш товарный материал будут затмевать расходы на лицензии.
Почему вы чувствуете, что вам нужно горизонтальное масштабирование. Сервер с несколькими процессорами с 40 ГБ оперативной памяти и хранилищем SAN может поддерживать очень значительную установку БД.
Можете ли вы предоставить информацию о размерах и ожидаемой информации о деятельности, чтобы лучше понять вашу проблему?
Ответ 6
Если вы идете по маршруту RAC, стоит вспомнить, что он не масштабируется горизонтально навсегда. Даже продавцы ребята признают, что 90% клиентов rac имеют 4 узла или меньше. Как только вы пойдете больше, вы получите уменьшающуюся отдачу. Так что рак может работать на вас, но он не гарантированно будет ответом.
Ответ 7
MySQL: http://www.mysql.com/why-mysql/scaleout.html
Ограничения заключаются в том, что он лучше всего работает с рабочими нагрузками с чтением. Обычно у вас есть один "мастер", который получает все записи и многие "подчиненные", которые реплицируют записи. Затем вы распространяете чтения по всем базам данных.
Репликация MySQL асинхронна, поэтому вам, вероятно, придется решать проблемы с задержкой времени (вы пишете мастеру, а затем читаете от подчиненного устройства до того, как запись была реплицирована).
Ответ 8
Netezza и другие средства Datawarehouse масштабируются таким образом, но они не подходят для рабочих нагрузок OLTP и веб-приложений.
Ответ 9
Маршрут Oracle для масштабирования нескольких компьютеров называется Real Application Clusters (Oracle RAC). Там нет конца документации по этому поводу в другом месте; вы можете попробовать начать с http://www.oracle.com/database/rac_home.html.
Ответ 10
Oracle Real Application Clusters. Если вы хотите лучше всего, взгляните на него.
Ответ 11
Если вы всерьез думаете, что вы выберете масштабный многоядерный блок "Big Iron", тогда вы подумаете о разделении своих данных. Это хороший, агностический способ создания базы данных.
Все базы данных, которые по горизонтали будут стоить по серьезной цене.
Если у вас нет мега $$, чтобы бросить на проблему, забудьте о RAC. В то время как это очень хорошо, его ОЧЕНЬ дорого стоит, когда вы масштабируетесь за пределами 2 узлов.
Ответ 12
MongoDB является одной из лучших баз данных, которая масштабируется горизонтально.
Ответ 13
Вы можете посмотреть на DashDB для OLAP - IBM сочетает его с Cloudant для OLTP. https://www.ibm.com/developerworks/community/blogs/5things/entry/5_things_to_know_about_dashdb_placeholder?lang=en