Выделенная пропускная способность Amazon DynamoDB (SDK для iOS)

Я новичок в DynamoDB. Меня очень смущает подготовленная пропускная способность. Я создаю игру для iPhone, в которой пользователи могут общаться внутри игры. У меня есть таблица чата. Таблица чата содержит GameID, UserID и Message. Как найти размер элемента для расчета пропускной способности. Размер предмета полностью зависит от сообщения, верно? Как рассчитать размер предмета?

Amazon сообщает, что мы можем изменить пропускную способность с помощью API UpdateTable или вручную с консоли. Если я хочу изменить его код формы, как я узнаю, что предоставленная пропускная способность для определенной таблицы превышена? Как это проверить по коду?

Меня также смущает CloudWatch. Это как понять?

Может ли кто-нибудь мне помочь? Пожалуйста, не указывайте мне на документацию.

Спасибо.


person EmptyStack    schedule 17.11.2012    source источник
comment
Вы действительно хотите базу данных для общения пользователей друг с другом? На самом деле это не похоже на правильное моделирование. Если вы действительно хотите использовать AWS для поддержки этого (что само по себе сомнительно), то, может быть, что-то вроде SQS сработает лучше?   -  person xaxxon    schedule 17.11.2012
comment
Я хочу, чтобы чат сохранялся, чтобы они могли видеть свои чаты в будущем. Итак, я использую DynamoDB.   -  person EmptyStack    schedule 17.11.2012
comment
Однако не уверен, что это действительно подходящая технология. aws.amazon.com/dynamodb/faqs/#DynamoDB_storage_cost_seems_high является высоким пропускная способность, приложения, чувствительные к задержкам. Похоже, это противоположно тому, что у вас есть.   -  person xaxxon    schedule 18.11.2012
comment
Хорошая точка зрения. Я согласен. Спасибо. Теперь рассмотрим, что мое приложение не является приложением для чата. А теперь ответь на мой вопрос.   -  person EmptyStack    schedule 19.11.2012
comment
Вопрос по-прежнему не имеет смысла. DDB не предназначен для набора несвязанных процессов. Он сообщает вам, когда вы знаете, что ваша оценка превышена, когда вы пытаетесь добавить / прочитать материал. Ответ заключается в том, что ваши клиенты будут знать, но, очевидно, вы не можете предоставить им учетные данные для настройки масштабирования. Пусть ваши клиенты отправляют сообщения в SQS, а затем главный процесс извлекает их и отправляет их в DDB, если необходимо. Этот процесс будет знать, если ваша скорость превышена, и может увеличить лимит ... но я все же думаю, что вы используете неправильный инструмент.   -  person xaxxon    schedule 19.11.2012
comment
Спасибо чувак. Я тоже начал чувствовать, что использую не тот инструмент. Посмотрим.   -  person EmptyStack    schedule 19.11.2012


Ответы (1)


Я сделаю все возможное, чтобы помочь с неразберихой.

  • DynamoDB - это база данных типа "ключ: значение"
  • CloudWatch - инструмент для мониторинга продуктов Amazon
  • Предоставленная пропускная способность - это примерно количество элементов в килобайтах, которое вы планируете читать / писать в секунду.

Когда вы превышаете выделенную пропускную способность,

  1. DynamoDB отвечает с помощью ProvisionedThroughputExceededException
  2. DynamoDB уведомляет CloudWatch

Cloudwatch в основном записывает и собирает точки данных. Для большинства приложений он будет отслеживать только агрегированные данные за каждые последующие 5-минутные периоды.

Затем вы можете получить доступ к этим данным для «ручного» мониторинга или для настройки «сигналов тревоги». Несколькими неделями ранее был очень интересный вопрос по SO об автоматическом масштабировании DynamoDB с использованием сигналов тревоги. Возможно, вам будет интересно его прочитать: http://docs.amazonwebservices.com/amazondynamodb/latest/developerguide/ErrorHandling.html

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

Что касается всех сервисов DynamoDB, для доступа к ним нужны учетные данные. Несмотря на то, что они могут быть ограничены определенной таблицей или набором действий, объединять их в приложение очень опасно. Вы бы дали MySQL или MongoDB или учетные данные, даже только для чтения, любым ненадежным людям?

Могу я предложить вам создать свое приложение, полагающееся на собственный сервер? Это доверенный сервер, созданный вами, вы можете безопасно выполнить любую проверку авторизации на нем и предоставить ему полный доступ к вашей таблице.

Надеюсь, это поможет. Не стесняйтесь просить о большей точности.

person yadutaf    schedule 19.11.2012
comment
Спасибо за ответ. Я слишком запутался, чтобы задавать больше вопросов. Я спрошу, есть ли у меня вопросы. - person EmptyStack; 20.11.2012
comment
Действительно, не стесняйтесь. StackOverflow здесь для этого. Понятия не имею, почему вас обвинили в вопросе. - person yadutaf; 20.11.2012
comment
Я полностью сбит с толку, потому что использовал DynamoDB, не зная, как работать с предоставлением пропускной способности. Сейчас приложение находится на завершающей стадии, и у меня начались проблемы с пропускной способностью доступа к БД, поэтому я не понимаю, попадет ли мое приложение в магазин или нет. Не думаю, что меня сейчас обвиняют в своем вопросе. Я всегда получаю отличные ответы от StackOverflow. Поэтому я ценю здесь всеобщий отклик. Они просто классные. Спасибо. - person EmptyStack; 20.11.2012
comment
Привет, jtlebi, я был бы признателен, если бы вы могли показать мне образец кода для использования UpdateTableAPI. Это было бы действительно полезно для меня. Спасибо, что нашли время помочь мне. - person EmptyStack; 24.11.2012
comment
Извините, я вообще не знаю IOS: / - person yadutaf; 26.11.2012
comment
Ой. Здорово. Без проблем. Надеюсь, я смогу найти код. Большое спасибо за то, что нашли время мне помочь. - person EmptyStack; 26.11.2012
comment
Я не получаю никаких исключений при превышении пропускной способности подготовки. Но я получаю нулевой ответ. Если я включаю VerboseLogging, исключение отображается в журнале, но не вызывает никаких исключений, как вы упомянули. Угадайте, в чем проблема? - person EmptyStack; 27.11.2012
comment
Согласно docs.amazonwebservices.com/AWSiOSSDK/ latest / Classes /: должен быть один :(. Может быть, вы используете реализацию высокого уровня, которая абстрагирует это? Я знаю, что Boto делает это и на Python. - person yadutaf; 28.11.2012