Какую базу данных использовать для хранения и обработки больших данных? - PullRequest
3 голосов
/ 21 октября 2009

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

В базе данных будут храниться список пользователей, некоторые другие не относящиеся к делу таблицы и, наконец, некоторые пользовательские данные. Скажем, если у меня есть 6000 пользователей, отвечающих на вопросы друг о друге. Простая математика показывает, что от этих пользователей, если каждый из них завершит викторину о всех (и в моем проекте это на 99% уверено, что это произойдет), я получу 35,99 миллионов записей (они исключат себя, и в этой конкретной ситуации операция 6000 * 5999). К сожалению, 6000, может быть, небольшое число, реальное растет день ото дня.

Что выбрать? MySQL и, может быть, если дела пойдут хорошо, и проект вырастет, чтобы расширить его в кластере? PostgreSQL, MSSQL? Oracle?

Я читал обо всех, у каждого есть свои плюсы и минусы, но я все еще не знаю, что выбрать. Преимущество MySQL и PostgreSQL - это, конечно, стартовая цена 0 долларов, что довольно неплохо при обычном самофинансируемом запуске.

Есть какие-нибудь мнения, советы? Если вы столкнулись с такой ситуацией в своем опыте в качестве разработчиков, я хотел бы услышать от вас.

Ответы [ 9 ]

4 голосов
/ 21 октября 2009

В наши дни бесплатное больше не делает различий между базами данных. И Oracle, и SQL Server имеют бесплатные версии, но есть ограничения на ресурсы - база данных 4 ГБ, ОЗУ и использование одного ЦП. Миллионы записей - не проблема, это то, какие типы данных вы используете.

Я видел комментарий ОП о неприязни к программному обеспечению MS - это ваша прерогатива, но использование бесплатных версий Oracle или SQL Server выигрывает от плавного перехода к высококлассным версиям соответствующей базы данных.

Лично я выбрал бы Oracle или SQL Server из-за IMHO, real особенностей функций, таких как поддержка иерархических запросов, факторинг подзапросов / CTE, пакеты (задолго до того, как я начал заниматься функциями / процедурами) полнотекстовый поиск, поддержка XML и т. д.

3 голосов
/ 21 октября 2009

MySQL будет обрабатывать 35 миллионов записей без проблем. Беспокойство о масштабируемости, когда вы туда доберетесь. Вы можете легко добавить raid жесткие диски, поддерживающие ваши таблицы базы данных, и если вы действительно начнете становиться большими, вы можете получить превосходное SAN, которое будет кричать ... Не беспокойтесь о механизме БД так же, как о базовом оборудовании. нас с миллионами записей.

2 голосов
/ 21 октября 2009

У меня не было проблем с обработкой таблиц размером до 36 000 000 строк в MySQL и Oracle.

Просто убедитесь, что вы проиндексировали правильные столбцы, запустили EXPLAIN для ваших запросов и соблюдаете правильные принципы проектирования.

1 голос
/ 22 октября 2009

Большинство действительно крупномасштабных веб-ресурсов используют распределенное хранилище значений ключей. Тем не менее, 35 миллионов это большой, но не , что большой. В большинстве современных баз данных вашими двумя основными проблемами масштабирования должны быть пропускная способность и то, что происходит, когда ни один блок больше не может содержать всю вашу базу данных. И обе эти проблемы могут быть в некоторой степени решены для любой базы данных, которую вы решите использовать. (Кэширование, репликация, шардинг и т. Д.)

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

1 голос
/ 21 октября 2009

Используйте MySQL бесплатно, и у вас есть опыт работы с ним.

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

0 голосов
/ 22 октября 2009

Прежде всего, не думайте о производительности. Преждевременный оптимизация является корнем всего зла и всего этого. Вы всегда можете добавить больше оборудования и / или настройки позже.

Все перечисленное должно работать хорошо, если настроено / поддерживается правильно. Я бы сосредоточился на управляемости и знакомстве. ИМХО базы данных с открытым исходным кодом отличаются управляемостью (возможно, не лучшим графическим интерфейсом, но CLI был моим домом в течение долгого времени).

И если база данных становится узким местом, зачем ограничивать себя этим выбором? Как насчет распределенной базы данных ключ-значение? Или, возможно, сериализовать данные непосредственно на диск? Хранение данных вне СУБД, хотя и часто осуждаемое, может быть правильным путем. Или просто используйте общий путь денормализации.

Всегда помните, чтобы не оптимизировать преждевременно.

Что касается мнений (поскольку вы специально об этом спрашивали), я предпочитаю базы данных с открытым исходным кодом, в частности PostgreSQL . Это надежное, быстрое и очень хорошее приложение. И даже с (относительно) большими наборами данных он превосходно работал на посредственном оборудовании (конечно, включалась некоторая настройка, но вы не можете пропустить этот шаг, независимо от того, какую БД вы выберете).

0 голосов
/ 21 октября 2009

Может быть, вы можете проверить Жар-птица

Сообщение в блоге о большой базе данных Firebird здесь

Лицензия MySQL здесь (не всегда бесплатная).

Postgresql и Firebird бесплатны.

0 голосов
/ 21 октября 2009

MySQL (i) и Postgre

  • 0 $ расходов
  • большое сообщество
  • много уроков
  • хорошо задокументировано

MSSQL

  • Вы можете получить «деньги» от MS, если будете рекламировать, что используете MSSQL (секретная информация от некоторых компаний, в которых я работал)
  • MS инструменты работают очень хорошо
  • Полный набор инструментов от C # IDE через .NET lib до Windows Server 2003

Oracle

  • Профессиональный и коммерческий провайдер
  • Используется многими крупными компаниями (я также слышал о Blizzard (World of Warcraft) с использованием Oracle)
  • - дорого

Окончательное решение зависит от особых требований вашего проекта. Сделайте себе быстрый список вещей, которые ВАЖНЫ для вашего проекта (например, быстрые запросы), и посмотрите, какие профессионалы базы данных наиболее соответствуют вашим требованиям.

Все о дизайне. База данных SQL - это своего рода машины, вам просто нужно знать, какой компонент нужно разместить здесь, а какой там. Сделайте четкий дизайн, и вы не будете бороться ни с одним из них.

0 голосов
/ 21 октября 2009

35 миллионов записей могут быть легко обработаны MS SQL Server (при условии правильного проектирования базы данных, индексов и т. Д.). Вы можете начать с бесплатной версии SQL Server Express, а затем, при необходимости, обновить до полной версии, поддерживающей кластеризацию и т. Д.

SQL Server Express имеет некоторые ограничения - один процессор, 1 ГБ памяти, максимальный размер базы данных 4 ГБ и некоторые другие вещи. Я не уверен, насколько быстро эти ограничения станут проблемой, но вы всегда можете перейти к полной версии, когда столкнетесь с ними.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...