2009-10-21 2 views
3

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

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

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

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

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

ответ

1

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

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

0

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

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

+4

4-х значный размер базы данных/36 миллионов строк = 119 байт в строке - включая индексы. –

1

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

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

+0

К сожалению, «дизайн» аспект, кажется, был потерян во многих случаях, поскольку роль надлежащего специализированного администратора баз данных была сведена к минимуму с помощью товара систем баз данных. – 2009-10-21 21:52:31

0

MySQL (I) & Postgre

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

MSSQL

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

Oracle

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

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

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

+0

Я использую php и обычно не доверяю программному обеспечению Microsoft. –

+0

Я тоже не большой поклонник MS, но на MSSQL работает много больших проектов, в том числе SO –

3

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

+0

Скалы с миллионами записей в веб-типе использования? Я имею в виду, плавный, довольно быстрый и не заставляющий пользователя иметь плохое мнение о веб-сайте? –

+2

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

+0

Кроме того, вы можете масштабировать показания посредством репликации. Вы можете реплицировать все данные в своей базе данных на неограниченное количество подчиненных баз данных и распространять нагрузку на чтение во всех подчиненных базах данных. Вы можете увеличить количество подчиненных устройств по мере роста трафика. Моя точка зрения, пересечь мост, когда вы доберетесь туда, MySql способен на это. – Zak

2

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

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

0

Может быть, вы можете проверить Firebird

блоге о большой Firebird базе here

лицензия MySQL является here (не бесплатно ВСЕГДА).

Postgresql и Firebird являются бесплатными.

+0

Почему эта почта получила отрицательный голос? –

+0

@Murali: Да, это правда. Зачем ? –

+0

Я исправил это: D.То, что мне не нравится в вашем сообщении, - это его форматирование, но +1 для ссылки на терабайтную БД. – maaartinus

4

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

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

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

+0

К счастью для меня, само приложение не является наукой о ракетах, и оно основано на Zend Framework. 80% данных в строке будет небольшим int (1-20), вероятно, но остальное будет, к сожалению, текстовым (я его не буду искать) –

+0

Собственно, я бы сказал, что это не прерогатива , но это мнение. Хорошая почта. – 2009-10-21 21:50:22

+0

@pst: Спасибо. Я имел в виду «прерогативу», как право ПП на выбор. На вашем URL-адресе есть трейлинг-код «>», удаляющий ссылку btw –

0

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

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

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

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

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

+3

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

Смежные вопросы