Высокопроизводительная БД для быстрого чтения и быстрой записи. Нет обновления или удаления

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

Это хранилище используется для хранения журналов, таких как важная информация, в нескольких системах. Since it's critical data which will be logged, read performance should be pretty fast as these data will be used to show history. Since we never do update on them/delete on them/or do any kinda joins, I am looking for right solution. Вероятно, мы могли бы архивировать данные в течение длительного времени, но с этим можно иметь дело.

Я пробовал просматривать разные источники, чтобы понять разные базы данных NoSql, мнение экспертов всегда лучше :)

Must Have:
1. Fast Read without fail
2. Fast Write without fail
3. Random access Performance
4. Replication kinda feature, one goes down, immediately another should be up and working
5. Concurrent write/read data

Good to Have:
1. Search content like analysing the data for auditing with/without Indexes

Don't required:
1. Transactions are not required at all
2. Update never happens
3. Delete never happens
4. Joins are not required

Направлено: http://kkovacs.eu/cassandra-vs-mongodb-vs-couchdb-vs-redis


person Reddy    schedule 12.11.2014    source источник
comment
Вы рассматривали плоский файл? Однажды я консультировал лотерейную компанию. У них были очень жесткие требования. Они использовали плоские файлы для быстрого и надежного чтения, записи и поиска.   -  person Mike Dunlavey    schedule 13.11.2014
comment
Только не понимаю, как так народно просто не по теме законные вопросы....   -  person Jeryl Cook    schedule 18.11.2015
comment
Вам нужно что-то вроде Hadoop с потоковой передачей. Решение SAAS — это BigQuery, хотя я бы рекомендовал его только для экспериментальных целей.   -  person themihai    schedule 19.10.2016


Ответы (3)


Раскрытие информации: Кевин Портер — старший инженер-программист в Aerospike, Inc. с мая 2013 г. (ref)

Обязательно обратите внимание на Aerospike; Aerospike доминирует в сфере рекламных технологий, где высокая пропускная способность и записи являются обязательными. Aerospike часто рекламируется как «скорость Redis с масштабируемостью Cassandra». Для поиска/запросов см. документацию Aerospike по дополнительному указателю.

Для получения дополнительной информации см. обсуждение/статьи ниже:

  1. Aerospike против Cassandra
  2. Aerospike против Redis и Mongo< /а>
  3. Эталонные показатели Aerospike

Наконец, проверьте производительность самостоятельно с помощью 1 миллион TPS на инструкциях EC2.

person kporter    schedule 13.11.2014
comment
спасибо за предложение. Как я упоминал в своем посте, операции чтения/записи/поиска должны быть достаточно быстрыми. Но когда я просматриваю Aerospike, речь идет о типе в памяти, а не о типе диска Cassandra. Мы не сможем предложить за это такую ​​огромную оперативную память, так как эти данные будут частью аналитики. - person Reddy; 13.11.2014
comment
На самом деле Aerospike — это не только база данных в памяти, наиболее широко используемая модель хранения — это Гибридное хранилище, где для каждой записи в оперативной памяти имеется 64-байтная запись индекса, а данные хранятся на флэш-накопителе (SSD). - person kporter; 13.11.2014
comment
В соответствии с правилами SO вы обязаны раскрыть свою принадлежность к Aerospike. . Не поймите меня неправильно, мне это нравится, и я уверен, что это человек для работы :) - person Renato Siqueira Massaro; 07.06.2015

Позвольте мне быть спонсором Cassandra.

Отказ от ответственности: я не говорю, что Cassandra лучше, чем другие, потому что я даже не знаю так глубоко mongo/redis/что угодно, и я не хочу даже вникать в такие вещи.

Причина, по которой я предлагаю Cassandra, заключается в том, что ваши потребности идеально совпадают с тем, что предлагает Cassandra, а ваш «необязательный список» представляет собой набор функций, которые либо не поддерживаются в Cassandra (объединения для экземпляров), либо считается анти-шаблоном (удаляет и в некоторых случаях обновляет).

Из вашего списка «Must Have», пункт за пунктом

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

  2. Быстрая запись без сбоев: то же, что и в пункте 1.

  3. Производительность произвольного доступа. Когда вы приходите в мир Cassandra, вы должны учитывать множество параметров, чтобы получить производительность произвольного доступа, но самое важное, что приходит мне на ум, — это модель данных. - если вы создаете модель данных, масштабируемую по горизонтали (дайте посмотрите здесь), и вы избегаете горячих точек, вы получаете то, что вам нужно. Если вы хорошо моделируете свою БД, у вас должно быть O(1) для каждой операции, поскольку данные структурированы для запросов.

  4. Репликация: в этом Cassandra даже лучше, чем вы думаете. Если один узел выходит из строя, в кластере ничего не меняется, и все (*) продолжает работать отлично. Кассандра не видит единой точки отказа. Я могу сказать вам, что со старой версией Cassandra у меня было время безотказной работы более 3 лет.

  5. Одновременная запись/чтение данных. Cassandra использует политику lww (last-write-wins) для обработки одновременных операций записи по одному и тому же ключу. Система поддерживает несколько операций чтения-записи, а с новыми протоколами также асинхронные операции.

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

(*) - если вы не используете Consistency Level All, который, имхо, НИКОГДА не должен использоваться в такой системе.

person Carlo Bertuccini    schedule 12.11.2014
comment
в настоящее время я смотрю Elastic Search против Cassandra. Оба включены в окончательный список. Могу ли я получить какую-либо статью/информацию о том, каковы ограничения каждого из них, чтобы я мог посмотреть на будущую архитектуру и принять решение о выборе. - person Reddy; 13.11.2014
comment
Это два разных решения, возможно, созданные для сосуществования, а не для конкуренции. Cassandra — это система хранения, а es — полнотекстовая поисковая система, основанная на lucene. Datastax Enterprise — это решение, похожее на только что описанное, использующее solr в качестве полнотекстовой поисковой системы и Cassandra для сохранения данных и выполнения точного поиска. - person Carlo Bertuccini; 13.11.2014
comment
Я использовал cassandra в своем решении, но производительность чтения для одних и тех же данных (извлечение данных с использованием точного ключа) ухудшается по мере увеличения размера данных. Чего не должно было случиться. - person Atmesh Mishra; 09.05.2017

Вот еще несколько ссылок о том, как вы можете объединить In-Memory с Disk (DRAM, SSM и дисковое хранилище) с Aerospike:

http://www.aerospike.com/hybrid-memory/

http://www.aerospike.com/docs/architecture/storage.html

Я думаю, что все правы с точки зрения соответствия конкретной БД вашему конкретному варианту использования. Например, Aerospike оптимален для данных «ключ-значение». Другие варианты могут быть лучше.

По аналогии, я всегда буду помнить, как несколько десятилетий назад моя сестра однажды одолжила мой компьютер и написала свою курсовую работу в Microsoft Excel. Строка за строкой представляли собой разные строки электронной таблицы. Это выглядело чертовски уродливо, но, ну, ладно. Она выполнила задание. Она ругалась и ругалась на то, как трудно было редактировать это. Без шуток!

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

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

Кто-нибудь работал с Aerospike? Как это соотносится с MongoDB?

кстати: у вас есть какие-либо более конкретные идеи для нас о том, какой тип проблемы вы пытаетесь решить?

person Peter Corless    schedule 18.11.2014