2012-03-26 4 views
1

Это мой первый пост в stackoverflow ~ Я ищу подходящую базу данных/движок для меня, так что немного фона: Просмотрев много вопросов и ответов об этом, я обнаружили, что многие БД лучше подходят для определенных типов веб-сайтов. С другой стороны, многие должности, которые я видел, были с 2011 года, поэтому, возможно, есть новые альтернативы!Percona, MariaDB, MongoDB, Couchbase и другие альтернативы

Сайт, на котором я использую эту БД, потребует много ЧТЕНИЙ и некоторых записей. Поскольку это требует большого количества ЧТЕНИЙ, и я знаю, что в большинстве случаев части данных будут в основном использоваться в определенное время, я думаю использовать что-то вроде Redis или Memcache. (Я также посмотрел на что-то наподобие VoltDB и понял, что не могу или больше не хочу хранить все свои данные в ОЗУ)

Я не очень хорош в создании архитектуры из базы данных -> Серверный уровень поэтому любой свет в правильном направлении был бы полезен. Я считаю, что моя лучшая ставка на архитектуру будет чем-то вроде ключа/значения для каждого объекта, который мне нужен, и размещения того, что мне действительно нужно в текущее время в ОЗУ, освобождая память каждый раз, когда я нуждаюсь или не требую каких-либо данных больше.

Я надеялся, что люди могут дать мне совет.

  1. Есть ли какие-либо новые альтернативы Percona или MariaDB или MongoDB или Couchbase в последнее время?

  2. Есть ли какие-либо новые альтернативы Percona или MariaDB или MongoDB или Couchbase в последнее время?

  3. Есть ли какие-либо альтернативы postgresql для них? Любые причины, по которым я не вижу столько?

    ** Даже информация о гибридном подходе или других способах приближения к архитектуре очень приветствуется.

Спасибо вам большое за вашу помощь!

ответ

0

Лучше всего реализовать стандартный SQL-сервер с агрессивным кэшированием в среднем слое. Вы можете использовать Memcached или JCS для кеширования.

Если ваше приложение находится в java, остерегайтесь стоимости сериализации (затраты на маршаллинг/unmarshalling) java-объектов при кешировании. Существует несколько быстрых сериализаторов, которые могут заменить стандартный Java-набор serializer.

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

0

Я согласен с Шрини. Используйте стандартное решение для баз данных (возможно, MySQL является наиболее распространенным) + хорошее кэширование, и вы не хотите использовать какое-либо решение менее года в производстве.

0

Масштабирование считывается с помощью кеширования. Денормализация агрегатов также является общим подходом. Решения NoSQL, такие как Mongo, не предназначены для масштабирования чтения, но и для масштабирования записи, а также для гибкой схемы (как правило, без схемы). Конечно, хранилища документов, такие как MongoDB, позволяют легко считывать все данные в одном запросе, но если это преимущество для вашего приложения зависит от данных и отношений, которые у вас есть. Поэтому, если вам интересно, какой тип хранилища выбрать, посмотрите на свои модели данных.

В большинстве случаев СУБД с кэшированием памяти (memcached, redis) достаточно хороши, если ваша проблема связана только с чтением.

6

Я лично переключил большое приложение сначала из mysql в mariadb, а затем в postgres.

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

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

NoSQL (как Mongo, CouchDB) является вариантом, потому что это быстро и просто. Я думаю, что если вам придется иметь дело с отношениями, то SQL будет лучшим вариантом. Но я не опытный пользователь NoSQL.

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


Edit: С меня попросили разработать свои взгляды на PG (PostgreSQL) против MySQL дискуссии, я написал это дополнительно:

Я думаю, что одна хорошая причина, чтобы выбрать PG над MySQL есть, что вы не найдете никаких инструкций по переключению с pg на mysql. :-) Это немного застенчивый, но я действительно думаю, что у него есть что-то истинное. Я не буду обсуждать тесты здесь, потому что я не думаю, что это большая разница и довольно, и ИМХО это не имеет большого значения в большинстве случаев.

В принципе, я думаю, что pg - действительно чистая база данных по сравнению с MySQL. MySQL немного похож на PHP: возьмите вход и сделайте что-нибудь с ним. Но нев! Например, datetime conversions, который используется MySQL, иногда бывает ужасным. Неверная дата, и вы получили 0000-00-00 00:00:00 в своей базе. Может быть, с этим все в порядке, а я нет. Мне очень нравятся PG Индексы, которые far better than MySQL's.

PG, как правило, намного лучше в функциях.Я думаю, что один ответ на этот пост Postgres 9.1 vs Mysql 5.6 InnoDB? имеет хорошее резюме:

  • откладываемые ограничения
  • проверочные ограничения
  • табличные функции (выбрать * из my_function())
  • общие табличные выражения
  • рекурсивные запросы (с использованием общих табличных выражений)
  • функции оконной обработки
  • функциональный индекс
  • частичный индекс
  • полнотекстового поиска на транзакционных таблиц
  • возможности ГИС на транзакционных таблиц
  • МИНУС или пересекаться оператор

Некоторые из них невероятно полезны в некоторых случаях.

Единственное, что мне кажется лучше в MySQL является репликация. Мне не понравился тот факт, что PG не имел встроенной репликации до 9.0, и мне не нравится репликация после 9.0, потому что она просто не очень настраиваемая (`My. Однако это всего лишь деталь.

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

Итак, если вы ищете прочную и хорошую базу данных, которая может быть использована из простых веб-приложений по сложным для безопасного онлайн-банкинга для ГИС-систем, выберите PostgreSQL. вы программируете приложение с ORM, в котором несколько таблиц, и вам совсем не нравится получать подробные сведения о базах данных, вы можете выбрать MySQL.

+2

Настоятельно не согласен с тем, что MySQL страдал от Oracle. MySQL 5.5 - лучший релиз в истории MySQL. Период. –

+1

Возможно, это правда, но 5.5 долгое время находилось в разработке. Причина, по которой я говорю «страдал», заключается в том, что многие основные разработчики оставили после приобретения (и создали мариадб). Это может не быть проблемой в течение следующих нескольких месяцев/лет, но база данных должна быть увеличена через 10 лет и более (или, по крайней мере, исправлены ошибки). –

+0

Я искал сбалансированный взгляд на преимущества postgres над mysql. Не могли бы вы просветить меня? – Duke

2

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

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

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

Просто сейчас, глядя на монго, но Couchbase настолько прост, что трудно устоять.

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