Существуют способы хранения ваших текстовых данных объемом 10 тыс., Но будет ли это приемлемо, зависит от того, что еще нужно хранить и как вы планируете использовать его.
Если вам нужно хранить произвольно большие данные (особенно двоичные данные), указатель файла S3 может быть привлекательным. Значение, которое SimpleDB добавляет в этом сценарии, - это возможность выполнять запросы к метаданным файла, которые вы храните в SimpleDB.
Для текстовых данных, ограниченных 10 КБ, я бы рекомендовал хранить их непосредственно в SimpleDB. Он легко поместится в один элемент, но вам придется распределить его по нескольким атрибутам. Есть два основных способа сделать это, каждый из которых имеет свои недостатки.
Один способ более гибкий и удобный для поиска, но требует от вас прикосновения к своим данным. Вы разбиваете свои данные на части по 1000 байт и сохраняете каждый кусок как значение атрибута в многозначном атрибуте. Для многозначных атрибутов упорядочение не накладывается, поэтому для каждого чанка необходимо добавить номер для упорядочения (например, 01)
Тот факт, что весь текст хранится в одном атрибуте, облегчает выполнение запросов с одним именем атрибута в предикате. Вы можете добавить различный размер текста к каждому элементу в любом месте от 1k до 200 + k, и он обрабатывается соответствующим образом. Но вы должны знать, что ваши предварительно добавленные номера строк могут оказаться положительными для ваших запросов (например, если вы ищете 01
, каждый элемент будет соответствовать этому запросу).
Второй способ хранения текста в SimpleDB не требует, чтобы вы помещали данные произвольного порядка в ваши текстовые блоки. Вы делаете упорядочение, помещая каждый текстовый блок в другой названный атрибут. Например, вы можете использовать имена атрибутов: desc01
desc02
... desc10
. Затем вы помещаете каждый кусок в соответствующий атрибут. Вы все еще можете выполнять полнотекстовый поиск с обоими методами, но поиск будет медленнее с этим методом, потому что вам нужно будет указать много предикатов, и SimpleDB завершит поиск по отдельному индексу для каждого атрибута.
Может быть легко думать об этом типе обходного пути как о хаке, потому что с базами данных мы привыкли обрабатывать этот тип низкоуровневых деталей для нас в базе данных. SimpleDB специально предназначен для выталкивания такого рода вещей из базы данных в клиент как средство обеспечения доступности как первоклассной функции.
Если вы обнаружили, что реляционная база данных разделяет ваш текст на куски по 1 Кб для хранения на диске в качестве подробностей реализации, это не будет казаться хаком. Проблема заключается в том, что текущее состояние клиентов SimpleDB таково, что вам приходится самостоятельно реализовывать многие виды такого форматирования данных. Это тот тип вещей, который в идеале будет обрабатываться для вас в умном клиенте. Просто пока нет доступных смарт-клиентов.