2016-01-05 2 views
0

Предположим, у меня есть производственное приложение на AWS с, скажем, 50 000 пользователей, и мне нужно просто взять имя пользователя и найти одну или две части информации о них ,Преимущества базы данных против хэша для простого поиска ключевого значения (в Ruby)

Есть ли какое-либо преимущество в сохранении этой информации в DynamoDB над хешем Ruby, хранящимся в ведро AWS S3?

«Преимущества» Я имею в виду как стоимость, так и скорость.

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

Более общий вопрос: каковы преимущества БД (например, DynamoDB) над хешем S3 для простого хранения ключей/значений?

ответ

1

Следует отметить, что Hash не может использоваться как база данных, он должен быть загружен значениями из некоторого хранилища данных (например, базы данных, файла JSON, YAML или его эквивалента). Напротив, DynamoDB - это база данных и имеет постоянство встроенного.

Сказав, что для 50 000 записей рубиновый хэш должен быть жизнеспособным вариантом, он будет работать достаточно хорошо, как указано в this article.

Ruby Hash не распространяется, следовательно, если вы запускаете приложение на нескольких серверах для доступности/масштабируемости, тогда вам придется загрузить этот Hash на каждом сервере и поддерживать его согласованность данных. Другими словами, вам нужно убедиться, что если один из атрибутов пользователя обновится через один сервер, как вы будете реплицировать его значение на другом сервере. Кроме того, если число пользователей в вашей системе не составляет 50 000, а 50 миллионов - тогда вам, возможно, придется переосмыслить хэш как кеш.

DynamoDB полномасштабный NoSQL database - он распространяется и обещает высокую масштабируемость. Он также стоит money, чтобы использовать его, поэтому ваши решения по его использованию должны основываться на том, нужен ли вам такой масштаб и доступность, предлагаемые DynamoDB, и есть ли у вас бюджет для этого.

+0

Спасибо. Этот ответ помог мне прояснить вопрос! Я не должен был сравнивать «Хэш» с базой данных. Скорее, я должен был сравнивать использование хеша Ruby (как JSON) в ведро S3 для использования DynamDB. – sarkon

+0

«Вы должны заметить, что Hash нельзя использовать в качестве базы данных, он должен быть загружен со значениями из некоторой базы данных». Вы также можете сохранить данные как YAML или JSON или как данные маршала или CSV или ... –

+0

@Jordan Изменит " базы данных "в" хранилище данных ". –