2012-09-26 2 views
1

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

Наш бизнес-процесс имеет одновременную запись 95% -99%, и в среднем только 1% -5% читает. Будет задействовано огромное количество данных, поэтому база данных NoSQL в памяти не будет соответствовать.

Что такое NoSQL DB на диске было бы оптимальным для этого случая?

Спасибо!

+0

Что заставляет вас думать, что реляционная БД будет узким местом, если вы не представляете, насколько быстро система NoSQL DB находится в вашей ситуации? – ZippyV

+0

Мы провели некоторые симуляционные тесты с MySQL и с возможными одновременными 100 000 источниками, записывающими данные без остановок в БД, вызывает замедление. – SyBer

+1

Почему вы не делаете те же тесты с различными системами NoSQL? – ZippyV

ответ

2

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

Я немного удивлен, когда вы говорите, что ожидаете проблем «без каких-либо дальнейших подробностей. Позвольте мне дать вам один ответ: исходя из фактов, которые вы нам дали. Что такое 100 000 источников и что такое сценарий написания? MySQl не лучший пример обработки масштабируемой параллельная операций записи и т.д.

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

Позволь мне взять два Примеры: В базе данных памяти, имеющей расширенный диспетчер писем, управление версиями данных и т. д., можно легко взять 1М «писателей», а авторы - это сетевые элементы, а приложение - передовая система NMS. конфликты, оптимистический параллелизм, буферизация записи в памяти до 16 ГБ, асинхронная параллельная запись на 200+ виртуальных шпинделей (SSD или магнитные диски) и т. д. Настоящая «присоска», чтобы есть новые данные! Отличный кандидат для того, чтобы увеличить производительность до предела.

2-й пример: MSC, имеющий разреженное числовое пространство, например. мобильные номера являются «кластерами» номеров. Огромное количество мест, но макс. 200M индивидуальных адресов. Очень редкие ситуации, когда есть противоречивые записи. RDBMS была заменена файлами с отображением памяти. И улучшение производительности было близко к 1000x, да 1000x в лучшем случае, и «только» 100x в худшем случае. Код замены составлял примерно 300 строк C. Это был True BigNoSQL, так как он хорошо подходил для решения проблемы.

Итак, короче говоря, не зная подробностей, нет «серебряной пули», чтобы ответить на ваш вопрос. Мы здесь не после посудомоечных машин, это просто «большие плохие данные». Когда мы не знаем, является ли ваша рабочая нагрузка «транзакционной». число или IO и чувствительность к задержке, или «BLOB like» aka. потоковые медиа, геоданные и т. д., это даст 100% неправильных результатов, чтобы обещать что-либо. Полоса пропускания и io-rate/latency/транзакции более или менее являются компромиссом в реальной жизни.

См., Например, http://publib.boulder.ibm.com/infocenter/soliddb/v6r3/index.jsp?topic=/com.ibm.swg.im.soliddb.sql.doc/doc/pessimistic.vs.optimistic.concurrency.control.html для некоторых дополнительных деталей.

+0

Спасибо за длинный ответ и извините за долгожданный статус ответа (мы в конечном итоге отлично справляемся с одной таблицей MySQL в сочетании с sharding). – SyBer

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