A look at the top reasons why teams decide to leave DynamoDB: throttling, latency, item size limits, and limited flexibility…not to mention costs Я люблю DynamoDB. Он был проверен в масштабе и является базой, которую многие лидеры отрасли используют для работы с критически важными для бизнеса рабочими нагрузками в течение многих лет. Он также отлично вписывается в экосистему AWS, что делает его супер легким для начала, интеграции с другими продуктами AWS и придерживаться его по мере роста вашей компании. Я люблю DynamoDB. Он был проверен в масштабе и является базой, которую многие лидеры отрасли используют для работы с критически важными для бизнеса рабочими нагрузками в течение многих лет. Он также отлично вписывается в экосистему AWS, что делает его супер легким для начала, интеграции с другими продуктами AWS и придерживаться его по мере роста вашей компании. Но (надеюсь!), приходит время, когда ваша организация масштабируется довольно значительно.С массивным ростом затраты становятся естественной проблемой для большинства компаний, и DynamoDB довольно часто цитируется как одна из основных причин утечки счетов из-за ее Модель обслуживания . Оплата по операциям Вы, вероятно, думаете: «О, это еще один пост, который пытается убедить меня в том, что затраты на DynamoDB слишком высоки, и я должен перейти на вашу базу данных, которую вы будете утверждать, что она дешевле». Хотя затраты, безусловно, являются важным фактором при выборе решения для баз данных (и ScyllaDB предлагает довольно впечатляющую ценовую производительность по сравнению с DynamoDB), это не всегда является самым критическим фактором. Если затраты являются критическим фактором для вас, есть много других ресурсов, которые вы можете пересмотреть. ScyllaDB vs. DynamoDB Benchmark: сравнение ценовых показателей по рабочим нагрузкам Статья Алекса Дебри о том, как вы должны думать о стоимости DynamoDB Тобиас Шмидт объяснил ценообразование Amazon DynamoDB Но давайте перейдем к повествованию и обсудим другие аспекты, которые следует учитывать при принятии решения о переходе от DynamoDB. HTTPS://WW.SCYLLADB.COMDynamoDB Cost Optimization MasterclassЭтот мастер-класс научит вас стратегиям по оптимизации затрат DynamoDB и другим альтернативам AWS, чтобы соответствовать вашим техническим потребностям. HTTPS://WW.SCYLLADB.COMDynamoDB Cost Optimization MasterclassЭтот мастер-класс научит вас стратегиям по оптимизации затрат DynamoDB и другим альтернативам AWS, чтобы соответствовать вашим техническим потребностям. HTTPS://WW.SCYLLADB.COMDynamoDB Cost Optimization MasterclassЭтот мастер-класс научит вас стратегиям по оптимизации затрат DynamoDB и другим альтернативам AWS, чтобы соответствовать вашим техническим потребностям. HTTPS://WWW.CYLLADB.COM → Мастеркласс оптимизации затрат DynamoDB Этот мастер-класс научит вас стратегиям по оптимизации затрат DynamoDB и другим альтернативам AWS, чтобы соответствовать вашим техническим потребностям. HTTPS://WWW.CYLLADB.COM → Мастеркласс оптимизации затрат DynamoDB Этот мастер-класс научит вас стратегиям по оптимизации затрат DynamoDB и другим альтернативам AWS, чтобы соответствовать вашим техническим потребностям. ДинамоDB Throttling Забавляться в любом контексте – не весело. Если вы видели его, вы, вероятно, ненавидели его и научились жить с ним. ProvisionedThroughputExceededException Существует множество способов стать жертвой DynamoDB throttling.На самом деле, это происходит так часто, что AWS даже имеет Одной из рекомендаций здесь является «переключение на режим «по запросу», прежде чем фактически обсудить равномерно распределенные модели доступа. Специальная страница по устранению неполадок Основная проблема с шумом DynamoDB заключается в том, что он значительно вредит задержкам. Рабочие нагрузки с дистрибуцией Zipfian склонны к этому... и результаты, достигнутые в недавнем этапе, не очень хороши: Во время этого эталона стало очевидным, что прорыв может привести к тому, что затронутый раздел станет недоступным до Это значительно увеличивает латентность хвоста P99. 2.5 seconds Хотя это правда, что большинство баз данных имеют некоторые встроенный механизм throttling, DynamoDB throttling просто слишком агрессивный. маловероятно, что ваше приложение будет иметь возможность масштабировать дальше, если это случается, чтобы часто получить доступ к определенному набору элементов, пересекающих DynamoDB раздел или границы таблицы. Интуиция может сказать: «Ну, если мы достигаем лимитов DynamoDB, тогда давайте поставим кэш перед ним!» Особенно трудно найти жесткие числа по точным критериям ускорителя DynamoDB, которые, по-видимому, в первую очередь направлены на использование процессора (что не является ) throttle тебя вниз Лучшие критерии для загрузки DynamoDB Латентность Вы можете утверждать, что дистрибуция Zipfian, показанная выше, нацелена на ахиллесовую пятку DynamoDB, и что решение AWS лучше подходит для рабочих нагрузок, которые следуют единому типу дистрибуции. Даже в сладком месте DynamoDB задержки P99 значительно выше по сравнению с ScyllaDB в различных сценариях. Конечно, вы можете достичь более низких задержек DynamoDB, чем те, которые представлены здесь. Тем не менее, DynamoDB сокращается, когда требуется, чтобы обеспечить более высокие пропускные способности, что приводит к тому, что задержки в конечном итоге начинают ухудшаться. Одним из способов избежать таких пиков является использование ускорителя DynamoDB (или любого другого решения кэширования, на самом деле) для отличного повышения производительности.Как и обещано, я не собираюсь входить в обсуждение затрат здесь, а скорее указываю, что обещанные однозначные задержки миллисекунд DynamoDB труднее достичь на практике. Чтобы узнать больше о том, почему размещение кэша перед базой данных часто является плохой идеей, вы можете посмотреть это видео на . Замена кеша с помощью ScyllaDB Ограничения размеров DynamoDB Каждая база данных имеет ограничение размеров элементов, включая DynamoDB. Тем не менее, ограничение 400KB может в конечном итоге стать слишком ограничительным для вас. : Блог об ограничениях DynamoDB «Так что объясняет это ограничение? DynamoDB указывает на то, как вы должны моделировать свои данные в базе OLTP. Системы обработки транзакций в Интернете (или OLTP) характеризуются большим количеством небольших операций против базы данных. (...) Для этих операций вы хотите быстро и эффективно фильтровать конкретные поля, чтобы найти нужную информацию, такую как имя пользователя или Tweet ID. Базы данных OLTP часто используют индексы на определенных полях, чтобы сделать поиски быстрее, а также держать недавно доступные данные в оперативной памяти». «Так что объясняет это ограничение? DynamoDB указывает на то, как вы должны моделировать свои данные в базе OLTP. Системы обработки транзакций в Интернете (или OLTP) характеризуются большим количеством небольших операций против базы данных. (...) Для этих операций вы хотите быстро и эффективно фильтровать конкретные поля, чтобы найти нужную информацию, такую как имя пользователя или Tweet ID. Базы данных OLTP часто используют индексы на определенных полях, чтобы сделать поиски быстрее, а также держать недавно доступные данные в оперативной памяти». Хотя это правда, что меньшие полезные нагрузки (или элементы) обычно обеспечивают улучшенные задержки, навязывание жесткого лимита может быть не лучшей идеей. пользователи ScyllaDB, которые решили отказаться от экосистемы DynamoDB часто упоминают этот лимит, позиционируя его как крупный блокировщик для их функциональности приложений. Если вы не можете хранить такие элементы в DynamoDB, что вы делаете? Вы, вероятно, придумаете стратегии, такие как сжатие соответствующих частей вашей полезной нагрузки или хранение их на других носителях, таких как AWS S3. В ScyllaDB мы используем другой подход: один по умолчанию может быть размером до 16 Мб (это конфигурируемо).Мы считаем, что вы должны иметь возможность решать, что лучше всего подходит вам и вашему приложению. mutation Говоря о свободе, давайте поговорим о... Ограниченный F DynamoDB Читательность Редом Редом Один из них довольно легкий. DynamoDB идеально интегрируется в экосистему AWS. Но именно там заканчивается польза. Как только вы присоединитесь к многооблачной стратегии или решите перейти к другому поставщику облачных технологий, или, возможно, вернетесь на местный уровень (не запускайте меня в AWS Outposts!), вам неизбежно нужно будет найти другое место для ваших рабочих нагрузок. Конечно, вы не можете предсказать будущее, но вы можете избежать будущих проблем.Это то, что отличает хороших инженеров от блестящих: готовы ли ваши решения удовлетворить растущие требования вашей организации. В конце концов, вы не хотите оказаться в ситуации, когда вам нужно изучить новую технологию, изменить свое приложение, провести тестирование нагрузки в новой DBMS, перенести данные, потенциально оценить нескольких поставщиков... Довольно часто это может стать многолетним проектом в зависимости от размера вашей организации и количества связанных с ней рабочих нагрузок. Рабочие нагрузки DynamoDB, естественно, хорошо подходят для ScyllaDB. Чаще, чем нет, вы можете просто следовать тому же моделированию данных, которое у вас уже есть в DynamoDB, и использовать его на ScyllaDB. - чтобы позволить вам беспрепятственно мигрировать, если вы хотите продолжать использовать один и тот же API для связи с вашей базой данных, тем самым требуя меньше изменений кода. ScyllaDB Alternator — открытый исходный код, совместимый с DynamoDB API Заключительные замечания Он охватывает ряд интересных реальных историй, некоторые из которых касаются точек, о которых мы говорили здесь.Несмотря на известные отзывы сообщества, он включает в себя справедливый список других соображений, о которых вы можете захотеть знать, прежде чем придерживаться DynamoDB. Люди, не запускайте меня на DynamoDB... Тем не менее, первое предложение этой статьи остается верным: я люблю DynamoDB. Это отличное решение и экономичное решение, когда ваша компания или случай использования имеет низкие требования к пропускной способности или не беспокоит некоторые неожиданные пики задержки. По мере роста моделирование данных и обеспечение того, чтобы вы не превышали жесткие пределы DynamoDB, может стать особенно сложным.Плюс к этому, вы будете заблокированы и в конечном итоге потребуете значительных усилий и планирования, если направление вашей организации изменится. При выборе базы данных в конечном счете речь идет о выборе правильного инструмента для работы. ScyllaDB ни в коем случае не является заменой для каждого случая использования DynamoDB. низкие задержки, ScyllaDB всегда является правильным выбором. predictable