我不知道simpledb是否可能。我正在尝试使用 以下类型的simpledb数据结构。
每个项目都有多个名称/值对(此处的名称是属性名称) 例如
ITEM1
serial_num - >值
ITEM2
serial_num - >价值
域中存在此类数量的项目,并且存在多个此类域。
我想查询类似的内容:
select * from domain where attribute-name = 'serial number'
获取跨多个项目和域的一个序列号相关的所有项目; 这可能吗?
我的第二个问题是关于使用字段组合作为项目名称
e.g
在上述结构中,
Foo_datetime
serial -> value
Foo1_datetime
serial -> value
然后我会查询某个日期时间范围之间的项目以及特定的Foo或Foo1?
之类的东西 select * from domain where itemname = 'Foo' and itemname > datetime and itemname < datetime.
答案 0 :(得分:4)
对于您的第一个问题,您建议的查询将按预期工作,无论您是“选择*”还是“选择serial_num”,它都可以正常工作。 SimpleDB查询语言类似于SQL。但是,无法将单个查询应用于多个域。每个查询都特定于单个域。要发出跨域查询,您必须向每个域发出查询。这会使您的查询量倍增,但查询可以一次性发送而无需等待,因此不会增加您等待响应的时间。
要回答第二个问题,项目名称确实可用于存储数据并对其进行查询。在这种情况下,您需要在查询中使用函数“itemName()”。用于修复最终示例的重写如下所示:
select * from domain where itemName() between 'Foodatetime1' and 'Foodatetime2'
其中datetime 1和2被替换为实际值。
答案 1 :(得分:1)
只想为Mocky的回答添加一点: SimpleDB将日期存储/比较为字符串。所以要小心,避免像2010-1-22那样存储日期,并始终以ISO 8601兼容格式存储日期。