Масштабируемость базы данных - ОЧЕНЬ сложная проблема; есть много вопросов, которые входят во весь процесс.
Во-первых, рассмотрите наихудшие фрукты; есть ли у вас отдельные таблицы (или столбцы), которые будут содержать основную часть ваших данных? Столбцы, которые будут содержать BLOB, которые составляют> 4 МБ каждый? Они могут быть извлечены из базы данных и сохранены в системе хранения с плоскими файлами и просто указаны в базе данных; прямо там, что может занять много громоздких решений вплоть до управляемого уровня.
Если нет, у вас есть сильно разные шаблоны использования для разных подгрупп таблиц? Если это так, есть возможность для сегментирования вашей базы данных в разные функциональные базы данных, которые могут быть разделены на разные серверы. Хорошим примером этого является чтение данных, в основном данных, например, на веб-серверах, которые генерируются редко (думаю, пользовательские данные домашней страницы), но часто читайте; этот тип данных может быть разделен на базу данных (или, опять же, файл с ссылками), который отделен от остальных пользовательских данных).
Рассмотрите транзакционные требования своей базы данных; можете ли вы четко изолировать свои границы транзакций или будут происходить глубокие смешения транзакций по всей вашей базе данных? Если вы можете изолировать границы транзакций, есть еще одна потенциальная полезная граница.
Это касается только некоторых проблем, связанных с такими вещами. Стоит подумать о том, действительно ли вам нужна база данных, которая на самом деле будет огромной, или если вы просто пытаетесь использовать базу данных в качестве слоя сохранения. Если вы используете базу данных так же, как уровень персистентности, вы можете пересмотреть, действительно ли вам нужен реляционный характер базы данных вообще, или если вы можете уйти с меньшим реляционным наложением поверх более простого уровня сохранения. (Я говорю об этом, потому что большое количество решений, кажется, что они могли бы уйти с тонким реляционным слоем на большую инерционности слой, это стоит учесть.)
, чтобы дать вам немного больше информации о реальной проблеме, мы собираемся извлечь большие объемы данных из множества источников и проанализировать множество статистических данных из каждой записи. каждый день база данных будет обрабатывать 100 000 новых записей, каждая из которых содержит 100 статистических данных. фактический размер файла для каждой записи - это проблема <1 КБ, и после того, как ее синтаксический анализ не нужно использовать. мы будем запускать много и много разных запросов в реальном времени на каждом растущем наборе данных и в конечном итоге открывать платформу для других людей, чтобы сделать то же самое. –
@nextgenneo: Да, у вас проблемы с этим. Я по-прежнему рекомендую делать все возможное, чтобы разумно разбить вашу базу данных; есть ли какой-то временный горизонт, через который вы не будете пересекать, или тому подобное? Потому что, если у вас действительно есть большой, неразрешимый реляционный набор данных, вам может потребоваться завершить (очень дорогое) коммерческое решение. Я не поклонник Oracle (по меньшей мере), но они понимают эпическое масштабирование лучше, чем кто-либо. –