simpledb功能:
自动index;
schemaless;
零管理成本;
高可用保证;
提供给应用读一致性选择接口;
扩展性(应用可以将数据切分到多个domain上,可见一个domain无法切分);
fast
simple to use
designed for use with other aws
secure (提供https)
inexpensive
simpledb数据模型:
domains:类似一个table。
具有接口CreateDomain/DeleteDomain/ListDomains/DomainMetadata。
domain limit:最大10G,不超过1 billion的属性,每个user有250个domain。
Items:类似row。
表现为一个独立的对象包含一组attributes,每个item不超过256个属性对。
Attributes/Values: 类似column/cell。
value不超过1024bytes。attribute是以key/value组合作为唯一的,即相同的key可以有多个值。
PutAttributes/BatchPutAttributes/DeleteAttributes/BatchDeleteAttributes/GetAttributes/select
simpledb部分接口说明:
条件put:
Expected:Expected.1.Name=VersionNumber&Expected.1.Value=30,满足key/value相等条件才可更新,可以认为提供了行事务性质,通过此来实现CAS的并发控制。
Replace=true:替换整个该key对应的一个或多个属性。
条件删除:语法类似put。
select语法:
select output_list
from domain_name
[where expression
][sort_instructions
][limit limit
]
expression有如下形式:
-
<select expression> intersection <select expression>
-
NOT <select expression>
-
(<select expression>)括号表达式
-
<select expression> or <select expression>
-
<select expression> and <select expression>
-
<simple comparison>
comparison支持=,!=,大小比较,like,not like,between,in,is null,is not null,every()。
every指每个keyword需要满足某条件。
注意:系统以字符串形式比较,对于数值大小比较,则需要在前面填充0
一致性保证:
读时可指定eventually还是consistent。这种consistent并不代表副本之间的一致性关系,而是代表反应给用户看到的一致性关系。这是有差别的,从amazon的文档看出consistent read保证读到的是最新的数据,这有很多做法,如另外有个最新数据的patch,对于consistent read,则需要访问最新数据的patch,eventually则不需要,写时写到patch就算成功,patch再完成向各副本的数据分发。
如何实现自动index呢:
猜测simpledb是基于列存储的,类似inforbright。