Amazon SimpleDB 是一个非关系型数据库,可认为是一种NoSQL数据库,它内部帮你将数据进行多个区域的存储(副本),用来支持高并发的读取,更新之类的操作只能在中央数据节点进行,但是一般在几秒钟之内就能将变化传播到其它节点。从这可以看出,SimpleDB是提供的是最终一致性。
但是SimpleDB在进行读操作的时候有一个选项(ConsistentRead=true)来告诉是执行强一致性读取,SimpleDB便只能去中央数据节点读取,很显然,这样肯定会牺牲一些效率。
SimpleDB内部使用密度存储稍低的驱动器存储器,所以SimpleDB更适合存储小型,碎片化的零散数据。可以使用Amazon S3来存储大型的数据元或文件。这里有一个使用场景,可以使用S3存储真正的数据,用SimpleDB存储这些数据的索引。
理解了上边这些,下边看一下SimpleDB的数据模型。首先一定要知道它并不像关系型数据库那样有模式的概念,它的模式非常灵活。
从数据结构来看看它的数据模型,数据结构一般为:
map<string, map<string, set<string> > >
如果你看了这个你就懂它的存储摸型,恭喜你~ 如果你还不明白我们这里再解释一下,Amazon SimpleDB 数据模型由域、项目、属性和值组成,域是由属性-值对描述的项目集合。
域你可以理解为表,项目可以理解为表中的一条记录,属性就是列,值就很好理解了。注意SimpleDB的域有10GB的限制,所以得自己分区以免超过此限制。如果不想有此限制,可以使用Amazon的另一种NoSQL,DynamoDB,说多了,我们在回来,如果是这样,那为什么是set<string>呢,因为SimpleDB的数据模型属性可以关联多个值,所以就是set,而不是string,这样带来了极大的灵活性。
原文:http://blog.csdn.net/hongchangfirst/article/details/25535447
作者:hongchangfirst
hongchangfirst的主页:http://blog.csdn.net/hongchangfirst
Amazon SimpleDB (一) 简介