практичное решение для максимальной длины элемента в Dynamodb (64 КБ) и отсутствия объединений таблиц в no-sql - PullRequest
1 голос
/ 28 февраля 2012

Во-первых, некоторый фоновый контекст, который, я думаю, может быть очень уместным:

Я проверяю dynanodb как жизнеспособное решение для будущего приложения.Это учебный эксперимент для ознакомления с предложением динамодаба.Моя платформа - amazon EC2 (Linux), node.js с библиотекой dynode .

Мой вопрос возник при рассмотрении отношений «один ко многим» (например, теги, ключевые слова, категории и т. Д.).) в контексте no-sql, где невозможно объединить таблицы.Сначала это казалось легким делом: просто сохраняйте их как список атрибутов.Но потом я прочитал об ограничении в 64 КБ.

, поэтому мой вопрос:

Элемент, включая его атрибуты (то есть строка БД со всеми столбцами) в DynamoDBне может превышать общий двоичный размер 64 КБ.Итак, как мне проверить данные, чтобы убедиться, что они не будут нарушать эту длину?

Очевидно, что числа просты, но строки «Unicode with UTF8 двоичное кодирование» будут проблемой.

Вторая часть этого вопроса может быть очевидна для ниндзя no-sql: как мне избежать столкновения с этим ограничением, одновременно облегчая бремя неспособности присоединяться к таблицам?Длинный ответ, вероятно, выходит за рамки формата вопросов и ответов, но если у кого-то есть комментарии или могут быть предложены альтернативы, которые я должен изучить при решении проблемы длины 64 КБ, я был бы признателен.

Лучше всего, и заранее спасибо завсе предложения.

Ответы [ 2 ]

1 голос
/ 08 января 2015

Если кто-то сталкивается с таким поздним днем, максимальный размер предмета теперь составляет 400 КБ, а не 64 КБ

1 голос
/ 28 февраля 2012

Я согласен с комментарием @bcoates.Это действительно зависит от вашего варианта использования.

У меня есть несколько реализаций (в SimpleDB, но с той же идеей), которые используют таблицу EntityRelationship для моделирования соединений, причем биты соответствующих данных дублируются в этих таблицах.С DynamoDB вы могли бы эффективно использовать клавишу диапазона для реализации тегов, категорий и т. Д. *

Кроме того, я использовал атрибут spanning для преодоления ограничений размера атрибута в SimpleDB (DynamoDB, то же самое можнодостигнуто).Несколько атрибутов, объединенных после выборки, чтобы восстановить всю запись.(Таблицы Range Key здесь также могут быть полезны)

У Simol (для C #) есть хорошая реализация для SimpleDB (http://simol.codeplex.com),), и я знаю, что владелец проекта работает над аналогичным внедрением для DynamoDB - вы можетевозможность получить некоторое представление об этом проекте.

...