如果你使用Couchbase服务器作为存储JSON文档的文档数据库的话,我相信 它的大部分功能都能得以发挥。比如,你可以使用N1QL!然而,有些时候你需要使用Couchbase存储其它的数据。在这篇博客中,我将向你展示如何将XML和二进制数据存储到Couchbase中。我会使用.NET的SDK,但我相信其他的SDK也支持这些操作。 |
存储JSON文档回顾
|
1
2
3
4
5
|
//创建文档 bucket.Insert<MyType>( "JSON_" + guid, new MyType { Foo = "BarJSON" }); //读取文档并显示出来 var jsonBackOut = bucket.Get<MyType>( "JSON_" + guid).Value; Console.WriteLine($ "JSON document: {jsonBackOut.Foo}" ); |
存储XML
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
var xmlo = new MyType {Foo = "BarXML" }; var xml = new XmlSerializer(xmlo.GetType()); using (var textWriter = new StringWriter()) { xml.Serialize(textWriter, xmlo); bucket.Insert<string>( "XML_" + guid, textWriter.ToString()); } //读取, 反序列化, var xmlBackOut = bucket.Get<string>( "XML_" + guid).Value; using (var reader = new StringReader(xmlBackOut)) { var xmlObject = (MyType)xml.Deserialize(reader); Console.WriteLine($ "XML: {xmlObject.Foo}" ); } |
存储一个字节数组序列化
接下来,我要将对象序列化为一个byte数组。不像JSON和XML,存储成一个字节数组意味着只能将该对象再次序列化成为.NET对象。
该过程类似于XML,除了Insert和Get定义的byte[]而不是string,并且我使用BinaryFormatter代替XmlSerializer。
1
2
3
4
5
6
7
8
9
10
11
12
13
|
var formatter = new BinaryFormatter(); using (var ms = new MemoryStream()) { formatter.Serialize(ms, new MyType { Foo = "BarDotNET" }); bucket.Insert< byte []>( "byte_" + guid, ms.ToArray()); } //将字节读取出来,反序列化,并显示对象 var bytesBackOut = bucket.Get< byte []>( "byte_" + guid).Value; using (var stream = new MemoryStream(bytesBackOut)) { var bytesObject = (MyType)formatter.Deserialize(stream); Console.WriteLine($ ".NET: {bytesObject.Foo}" ); } |
总结
|
本文标题:Google Chrome 54.0.2840.59 正式版发布
本文地址:https://www.oschina.net/translate/using-couchbase-to-store-non-json-data
参与翻译:昌伟兄
英文原文:Using Couchbase to Store Non-JSON Data