文档数据
文档数据是纯字节序列,服务器不会试图去解析或理解存储的文档格式。这意味着你可以存储从数字到图片的任何东西。这种开放的存储结构,也意味着不必去声明或定义要存储信息的结构,你可以充分灵活的自己定义所需要的结构。
存储简单的信息,例如数字或字串,只需简单的将数据写进文档值。存储复杂的信息结构,你可能需要序列化对象,或者更通用的JSON结构。
序列化
序列化将特定语言的复杂的内部结构,例如hash或对象,转换为字节序列,从而可以存储在couchbase里。序列化的结构还能被还原成原来的数据结构,从而被特定的语言直接使用。
所有的couchbase客户端库在存取文档时,都自动支持序列化和反序列化结构或对象。
JSON
序列化信息的问题是,它是语言约定的。假如你在Java里存储一个对象或数据结构到couchbase,它被序列化为一个只有java语言库才能识别的串。假如要跨语言进行信息存储,你需要使用更通用的格式,比如JSON。
JSON之所以流行,一是因为它很简洁(它看起来像许多脚本语言的内置hash结构),二是它可以被Javascript直接使用,这样在web基础的应用里,不必对它做特别处理。
JSON的格式有良好的描述,详见http://json.org. 在couchebase里使用JSON的最好方法是,每条记录存储一个JSON哈希结构。例如,可以定义一条啤酒记录如下:
{ "id": "beer_Hoptimus_Prime", "type": "beer", "abv": 10.0, "brewery": "Legacy Brewing Co.", "category": "North American Ale", "name": "Hoptimus Prime", "style": "Imperial or Double India Pale Ale", }
许多语言支持类似的hash、hashmap或关联数组结构,有相应的库可以将hash结构转换为JSON格式,并还原它们。
请注意:couchbase 2.0在使用JSON存储信息时,允许你使用查询和索引的高级功能。