2009-08-27 4 views

ответ

4

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

Быстрее? Более надежный? Позволяет репликации? Можно ли выполнять более сложные запросы? Является ли ваше приложение приемлемым для «sharding», и в этом случае вы, вероятно, должны иметь базу данных, которая может сгруппировать и администрироваться более легко, или вам нужно все в одном массивном наборе связанных таблиц, и в этом случае вы, , вероятно, хотите получить хорошую поддержку для многих ядер и большой памяти. У вас есть комплексная настройка аутентификации или это простое «однопользовательское» веб-приложение? Является ли основная часть данных двоичными объектами, или это простые числа и строки? Как вы будете делать резервные копии?

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

Моя склонность будет направлена ​​на PostgreSQL, но это связано с тем, что у меня было несколько бедствий с потерей данных MySQL за несколько лет назад, и я не пришел , чтобы снова доверять ему. PostgreSQL было очень приятно с точки зрения возможности сделать резервные копии легко.

+0

извините, потому что я не сказал вам о потребностях ... конечно, он должен быть надежным и быстрым ... цель предназначена для системы отчетности, но она воспроизводит миллион записей. – user149513

+0

Интересная история о MySQL. Можете ли вы рассказать о своих историях о бедствиях? – User1

+0

это было некоторое время назад (возможно, MySQL 4?), И у нас сбой ИБП на нас, сбой сервера базы данных. Наша база данных PostgreSQL на том же компьютере была абсолютно прекрасной, но MySQL одна из них была невосстановимой. (да, у нас были резервные копии, но они все равно потеряли около 23 часов данных) –

5

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

2

Ну, это в конечном счете зависит от того, с чем вам больше всего нравится. Согласно MySQL, теоретического ограничения размера базы данных не существует ... это зависит от возможностей поддерживающего его оборудования. С количеством строк, используя InnoDB, теоретический предел составляет 256 терабайт. Причина, по которой я все время отказываюсь от теоретического, заключается в том, что, вероятно, есть очень небольшой шанс, что вы можете индексировать 256 терабайт данных, так что это то, что они приближаются к может быть предел. Если вы нажмете этот максимум, у вас появятся большие проблемы. Текущими пользователями MySQL в производстве, о которых я могу думать, являются YouTube и Facebook. Вероятно, это два самых больших ... и кажется, что они хорошо справляются.

Но еще раз, как я уже говорил выше. Это то, с чем вам больше всего нравится.

4

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

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

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

Люди упоминают, что Facebook использует MySQL; это правда. Из-за того, что на самом деле они используют сотни (тысячи??) Баз данных mysql, все они отвечают за их собственный небольшой поперечный разрез данных. Если вы думаете, что можете загрузить facebook в экземпляр MySQL (или postgres или oracle) ... ну, они, вероятно, хотели бы услышать от вас ;-).

Как только вы попадаете в терабайт, все становится трудно. Существуют специализированные решения, такие как Vertica, Greenplum, Aster Data. Существуют различные «nosql» хранилища данных, такие как Cassandra, Voldemort и HBase. Но я сомневаюсь, что вам нужно дойти до такой крайности. Просто купите немного больше оперативной памяти.