Миграция с mysql на couchbase. Это хорошая идея? - PullRequest
4 голосов
/ 12 марта 2019

В настоящее время мы используем базу данных MySQL.Размер базы данных составляет около 45 ГБ, и он постоянно растет.

  1. Каждую секунду в базу данных записывается около 4000 данных.
  2. И в то же время несколько пользователей получаютданные из базы данных.Это означает, что чтение и запись постоянно происходят в базе данных.

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

Кому не следует использовать Couchbase ?? Мы также используем Erlang, который записывает тысячи записей в секунду в базу данных.Поддерживает ли Erlang NoSQL Couchbase?

Спасибо

Ответы [ 3 ]

4 голосов
/ 12 марта 2019

сотрудник Couchbase здесь,

1 - С точки зрения пропускной способности записи, учитывая архитектуру couchbase и то, как данные автоматически обрабатываются / распределяются, эта производительность может быть легко достигнута.Размер данных также не должен быть проблемой, учитывая тот факт, что база данных может масштабироваться до сотен узлов в одном кластере (1024 узла в теории), но даже у самых крупных клиентов есть кластеры с менее чем 100 узлами.

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

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

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

3 - Даже если некоторые модули CB написаны на языке erlang, мы не делаему вас есть Erlang SDK https://docs.couchbase.com/server/6.0/sdk/overview.html.Однако, так как сам CB спроектирован так, чтобы он был реактивным, вы все равно можете использовать узел или java для реактивной записи / чтения, если вам действительно нужно получить максимальную возможную пропускную способность.

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

3 голосов
/ 12 марта 2019
  1. Базы данных Nosql предназначены для того, чтобы ответить на ваш первый вопрос, обеспечивая горизонтальную масштабируемость, которая позволяет легко и с минимальными затратами масштабировать кластер баз данных для управления большим и большим количеством данных.Такая горизонтальная масштабируемость не достигается бесплатно, поскольку в целом она влияет на доступность или согласованность данных, и это отчасти может определить ваш выбор правильного решения.

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

https://www.dataversity.net/choose-right-nosql-database-application/#

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

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

Последний критерий выбора - это API запросов и поддерживаемые языки.Это очень важно, потому что портирование существующих запросов может быть очень сложным, если язык запросов nosql db не может обеспечить все необходимое.Также это может быть связано с самим клиентом db, если, например, нет полнофункционального клиента erlang для couchbase.

Надеюсь, что это даст вам некоторые идеи.

2 голосов
/ 13 марта 2019

Выберите, чтобы перейти с SQL против NoSQL против графика ... это первый шаг. Как ваши данные организованы с точки зрения отношений между данными. Если вам нужны отношения между объектами, используйте SQL / Graph DB, если вам нужен только один объект, используйте NoSQL.

Если вы решите использовать NoSQL, есть много вариантов. С Erlang я использовал CouchDB и Elastic Search, но вы можете выбрать MangoDB, Raik или что-то еще. Наиболее важные моменты, которые необходимо учитывать, это то, как вам нужен доступ к данным, простота очистки / удаления больших наборов данных (CouchDB не требуется), вам нужен ACID или возможная согласованность ...

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

Erlang будет работать с любым БД, просто выясните, каковы ваши требования.

...