Какие системы баз данных должны рассмотреть систему баз данных?

StackOverflow https://stackoverflow.com/questions/2839505

Вопрос

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

Это заставило меня подумать о бессвязной базе данных, такой как Монгодб, Couchdb., Кассандра или Гадость. Отказ К сожалению, у меня тоже нет опыта. Я прочитал несколько хороших отзывов на MongoDB, и это выглядит интересно. Я рад провести время и учиться, если кто-то окажется, как идти. Я бы сильно ценю любую, предлагающую очки или проблемы, которые следует учитывать при работе без реляционных СУБД?

Это было полезно?

Решение

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

  • Доступный талант. MySQL очень распространен, и вы, вероятно, найдуте его проще (и более важно, дешевле), чтобы найти разработчиков для него, по сравнению с более редическими системами базы данных. Эта большая основа разработчика также будет означать более учебные пособия, более активное сообщество поддержки и т. Д.
  • Простота развития. Опять же, потому что MySQL настолько распространен, вы обнаружите, что это БД выбора для больших систем / услуг. Это общее основание может сделать любую внешнюю интеграцию немного проще.
  • Вы готовитесь к ситуации, которая может никогда не существовать, и управляется, если она будет. Очень немногие предприятия (неверные стартапы) приближаются к ограничениям MySQL, и со всем должным уважением (и я только догадываюсь здесь); Вероятность того, что ваш стартап когда-либо достигнет пропускной способности к данным, чтобы калечиться правильно структурированным, хорошо обеспеченным ресурсами MySQL DB почти ноль.

По сути, не тратьте свое время (== деньги), беспокоясь о том, какой БД использовать, так как MySQL может обрабатывать много данных, хорошо доказано и хорошо поддерживается.

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

FYI, мое решение для кэширования выбора Memcached..

Другие советы

До сих пор никто не упомянул PostgreSQL в качестве альтернативы MySQL на реляционной стороне. Знайте, что MySQL Libs являются чистыми GPL, а не LGPL. Это может заставить вас выпустить свой код, если вы ссылаетесь на них, хотя, возможно, кто-то с более юридическим опытом может позволить вам улучшить последствия. На другой стороне ссылка на библиотеку MySQL не то же самое, что просто подключение к серверу и командам выпуска, вы можете сделать это с закрытым источником.

POSTRESQL Обычно - лучшая бесплатная замена Oracle и лицензия BSD должна быть более дружественной для бизнеса.

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

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

  1. Размер ваших данных или если вам нужно хранить файлы в вашей базе данных.
  2. Огромное количество чтения и очень немногих (даже ограниченных) пишет. В этом случае больше, чем база данных, вам нужен каталог, такой как LDAP
  3. Важность распределения данных и / или репликации. Большинство реляционных баз данных могут быть более или менее хорошо реплицированы, но из-за их концепции / дизайна не обрабатываем распределение данных, а также справиться с большим количеством данных, которые не вписываются в один сервер или имеют права на доступ, которые нуждаются в специальных отдельных / Дополнительные серверы?

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

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

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

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

Будь осторожен с Nibernate., легко сделать решение, которое приятно и легко кода, но имеет плохую производительность с большим количеством данных. Например, следует ли использовать ленивый или нетерпеливый выбор с ассоциациями, следует тщательно рассмотреть. Я не имею в виду, что вы не должны использовать Nibernate, но убедитесь, что вы понимаете, как работает Nhibernate, например, что «n + 1 выбирает» - обрабатывает средство.

Мера, не предполагайте.

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

Итак, если у вас есть корпус для NoSQL, код к нему. Или, если вам удобнее с реляфой, код к этому. Затем измерить, насколько хорошо она выполняет и как она весы, а если все в порядке, иди с ним, если нет, проанализировать почему.

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

Я предлагаю вам попробовать каждую БД и выберите тот, который облегчает ваше приложение. Идти к http://try.mongodb.org. попробовать Mongodb с простым уроком. Не беспокойтесь о скорости, так как вначале время разработчика более ценно, чем время ЦП.

Я знаю, что многие пользователи MongoDB смогли убить их ORM и их кэширующий слой. Модель данных Mongo намного ближе к объектам, с которыми вы работаете, чем реляционные таблицы, поэтому вы обычно можете просто напрямую хранить свои объекты, даже если они содержат списки вложенных объектов, таких как сообщение в блоге с комментариями. Кроме того, потому что Mongo достаточно быстро для большинства сайтов, которые As - есть, вы можете избежать борьбы с сложностями кэширования и, как правило, доставляют более реальный участок. Например, Wordnik.com сообщили 250 000 чтения / сек и 100 000 вкладышей / сек с объектом 1.2TB / 5 миллиардов объектов DB.

Есть несколько способов подключения к MongoDB из .NET, но мне не хватает опыта с этой платформой, чтобы знать, что лучше:

Отказ от ответственности: Я работаю на 10GEN на MongoDB, поэтому я немного предвзятый.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top