几个在GAE的datastore方面不太理解的问题

乍一看上去,觉得GAE的确是给很好的东西,理念十分先进,虽然datastore看上去和关系数据库很相似,但实际在底层的设计上却是有着决然的不同。今天看来一天,发现来几个问题还是无法理解的,先mark出,以免忘记。

1. datastore的数据是不是永远存在的,也就是说google会不会主动去删除。问题一在,如果数据越增越多,会不会影响效率,当然在小范围内我们可以预见到是没有问题的,可过给十年八年呢?问题二,是不是每建一给数据类型,就会有一个对应的Entity类型出现,那也就是说如果我把以前的数据类型的某一项属性稍微更改一下,那么这个旧数据就相当于垃圾一样存在来datastore中?

2. Key这个玩意,感觉上和主键很相像,但是却有很多不同之处。比如GAE规定,Key只能有四种形式,Long, Unencoded String, Key和Key as Encoded String。对于这之间的区别实在是十分模糊。比如在关系数据库中,我们常用的是设立一个自增的主键,而在这边呢,到底是用哪一种呢?而且Key的String值还是自动随机生成的。

3. 数据在google那边到底是如何存储的,是杂乱无章的,还是按照某种顺序?也许就是直接按照Hash来进行存储的,但在获取的时候,如何才能提高效率呢?特别是当数据量非常之大的时候?

思考一下,有结果了再来继续。

另外加些

1. GAE的一些本地内容是存储在\war\WEB-INF\appengine-generated下面的,有两个。分别是datastore-indexes-auto.xml负责存储index信息,和 local-db.bin存储的是本地的数据。

This entry was posted on Tuesday, November 3rd, 2009 at 4:36 pm and is filed under GAE . You can follow any responses to this entry through the RSS 2.0 feed. Both comments and pings are currently closed.

One Response to “ 几个在GAE的datastore方面不太理解的问题 ”

  1. mousehu says:

    对于第一个问题回答一下,google是不会删除你的存储数据的。如果要清空存储数据,对于本地的开发数据,可以通过删除\war\WEB-INF\appengine-generated下的那两个文件,如果是已经部署到了Google上的,可以到程序管理的那个界面上删除。如果你修改了某一个实体的某个属性,同时你还没有删除老的数据,那么你的程序有可能出错。



  • English Version

    • Cannot read Chinese? Please take a look at my English site, hope you can find more you need there!
  • 感谢支持

  • twitter

    facebook

    linkedin

  • Categories