Я отправил это раньше, но у меня нет никаких оснований, чтобы изменить этот совет:
MySQL легче начать использовать.
Более простые инструменты пользовательского интерфейса. Быстрее, если вы не используете ACID. Более терпимо к недействительным данным. Столбцы автоинкремента также просты, как ввод автоинкремента. Разрешения не привязаны к файловым системам и пользователям ОС. Настройка разделителя проще, чем использование «знака доллара» PG при записи хранимой процедуры. В MySQL вы подключаетесь ко всем базам данных, а не по одному за раз.
Postgres (PG) гораздо более совместим со стандартами, но он уродливее и сложнее, особенно с точки зрения пользовательского интерфейса. Он требовал ручного вакуумирования и фактически обеспечивал ссылочную целостность (что является большой вещью, которая может быть болью в заднице). Автоинкремент гораздо более гибкий, но для него требуются последовательности (которые можно замаскировать с помощью последовательного интерфейса) и ждать, что такое OID?
Так что, если вы действительно не знаете или не заботитесь о базах данных, достоверности данных, соблюдении ACID и т. Д., Но вы заботитесь о легкости и скорости, вы, как правило, работаете с MySQL.
Слишком много (не все, но многие) «веб-программисты» много знают о «веб-2.0» или PHP или Java, но мало знают о теории или практике базы данных («индекс? Что это такое»?).Они, как правило, видят базу данных как просто причудливую хэш-таблицу или мешок данных, и даже тот, который нигде не является динамически изменчивым или прощающим как хэш-таблица.
Для этих людей MySQL - так как до 5.0 он не был действительно РСУБД и по-прежнему не является - это находка. Это «быстрее», чем конкуренция, и не «тратит время» на «эзотерическую» базу данных, которую веб-программист не хочет, не понимает и не видит.
Для кого-то с фоном базы данных, с другой стороны, MySQL - это минное поле: материал, который должен работать (сложные представления, групповые байты, порядковые байты в групповых байтах) может работать или может, если вам повезет сбой сервера , или если вам не повезло, просто дайте результаты с неправильными данными.
Я провел дни, работая над некоторыми из этих вещей, по общему признанию, сложными из-за необычайно сложных представлений и групповых рядов.
И MySQL на самом деле не быстрее. Если вы используете таблицы InnoDb для ACID (или просто потому, что в более чем 30 миллионах строк таблицы MyISAM имеют тенденцию становиться дрянным), да, прямой выбор из одной таблицы, вероятно, быстрее, чем в PG. Но добавьте соединения, и PG внезапно значительно быстрее. (MySQL особенно плох при внешних соединениях.)
Подводя итог: если вам база данных - это сумка, если вы никогда не намерены делать интеллектуальный анализ данных или отчетность, если вы в основном заинтересованы в обслуживании больших кусков текста с несколькими отношениями или обновлениями, то есть, если вы используете базу данных для создания блога, MySQL - отличный выбор.
Но если вы действительно управляете данными, если вы понимаете, что данные живут дольше и более ценны для бизнеса, чем интерфейсные программы и бизнес-правила среднего уровня, если вам нужны функции реальной базы данных, используйте PG.
«Веб-программист», который решил, что все его структуры таблиц могут быть автоматически сгенерированы Hibernate (или какой-либо другой ORM), смотрит на это и говорит «слишком сложно» и «я ставлю сложный, означает большую стоимость и более медленную скорость «и поэтому он идет с MySQL.
Как я уже сказал, PG намного превосходит, и я ненавижу испорченность причудливыми ошибками MySQL, и я думаю, что общая производительность PG, вероятно, лучше, чем MySQL для любого даже немного сложного запроса.
Но MySQL делает вещи выглядят (обманчиво) простыми, поэтому вы получаете много людей, которые действительно не понимают дизайн базы данных, полагая, что MySQL - отличный выбор.
Использование PG. Он последователен, он надежный, он совместим со стандартами, он быстрее (даже умеренно) сложных запросов, он не полностью отбрасывает ваше расписание с необычными ошибками.
Как оптимально вы хотите? Если вы хотите, чтобы лучшая производительность могла купить деньги, то это отличается от того, что лучшие деньги на переходе могут купить. И если деньги плотные, то, вероятно, следует упомянуть об этом. Кроме того, какова ваша платформа разработки; нецелесообразно выбирать решение, которое хорошо интегрируется с вашими инструментами и доступными уровнями доступа к данным. – Rob
1) Сколько стоит «большое количество входящих данных»? 2) - это данные, которые многие крошечные предметы вставлены часто или несколько больших предметов, вставленных нечасто? 3) обладают ли данные единой структурой (все ли данные имеют одни и те же поля)? 4) как вы планируете решать масштабируемость, вертикально (быстрее proc, больше RAM) или горизонтально (распределенная БД, ошпаривание)? 5) сколько времени вам нужно, чтобы узнать новое? 6) Есть много других вопросов, которые я мог бы задать, но я хочу помочь вам понять, что ваш вопрос нуждается в уточнении. –
1) В зависимости от количества пользователей, однако один пользователь будет предоставлять много данных. 2) В данных будет много мелких предметов, вставленных часто. 3) Да, данные имеют однородную структуру. 4) Я не знаю, мне никогда не приходилось «обращаться к масштабируемости» раньше, однако у меня есть чувство с этим проектом, возможно, я должен, вероятно, «вертикально».5) много времени :-), в пределах, конечно. – benofsky