Запрос SimpleDB по имени атрибута - PullRequest
3 голосов
/ 18 июня 2010

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

  1. Каждый элемент имеет несколько пар имя / значение (имя здесь - атрибут-имя), например,

    item1
    serial_num -> значение
    item2
    serial_num -> значение

  2. такое количество элементов существует в домене, и таких доменов несколько.

Я хочу запросить что-то вроде:

select * from domain where attribute-name = 'serial number'

, чтобы получить все элементы, связанные с одним серийным номером, для нескольких элементов и доменов;Это возможно?

Мой второй вопрос касается использования комбинации полей в качестве имен элементов.
Например,
в вышеупомянутой структуре,

Foo_datetime
            serial -> value

Foo1_datetime
            serial -> value

И тогда я бы запросил элементы между определенным диапазоном даты и времени.а для челюстной фу или фу1?что-то вроде

 select * from domain where itemname = 'Foo' and itemname > datetime and itemname < datetime.

Ответы [ 2 ]

4 голосов
/ 21 июня 2010

Для вашего первого вопроса предложенный вами запрос будет работать так же, как вы ожидаете, независимо от того, "выберите ли вы *" или "выберите серийный номер", он работает в любом случае. Язык запросов SimpleDB похож на SQL. Однако невозможно получить один запрос для применения к нескольким доменам. Каждый запрос относится к одному домену. Для выдачи междоменных запросов вы должны выполнить запрос к каждому домену. Это умножает ваш объем запросов, однако запросы можно отправлять сразу, не дожидаясь, поэтому это не увеличивает время ожидания ответов.

Чтобы ответить на второй вопрос, имена элементов действительно могут использоваться для хранения данных и запроса к ним. В этом случае вам нужно использовать функцию itemName () в вашем запросе. Переписать, чтобы исправить ваш последний пример выглядит следующим образом:

select * from domain where itemName() between 'Foodatetime1' and 'Foodatetime2'

Где datetime 1 и 2 заменены фактическими значениями.

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

Просто хочу немного добавить к ответу Моки: SimpleDB сохраняет / сравнивает даты в виде строк. Поэтому будьте осторожны и избегайте дат, хранящихся как 2010-1-22, и всегда храните даты в формате, совместимом с ISO 8601.

...