2KB项目,专业的源码交易网站 帮助 收藏 每日签到

使用 Couchbase 存储 Non-JSON 数据

  • 时间:2019-01-23 18:28 编辑:2KB 来源:2KB.COM 阅读:353
  • 扫一扫,手机访问
  • 分享
摘要: 英文原文:Usi
英文原文:Using Couchbase to Store Non-JSON Data

如果你使用Couchbase服务器作为存储JSON文档的文档数据库的话,我相信 它的大部分功能都能得以发挥。比如,你可以使用N1QL!然而,有些时候你需要使用Couchbase存储其它的数据。在这篇博客中,我将向你展示如何将XML和二进制数据存储到Couchbase中。我会使用.NET的SDK,但我相信其他的SDK也支持这些操作。

存储JSON文档回顾

快速地回顾一下在Couchbase中存储JSON文档的知识。一旦你有了一个bucket,你就可以使用Insert/Upsert来创建/更新一个文档,然后使用Get将文档读取出来。使用.NET SDK,你可以按照所定义的类型自动处理序列化。

//创建文档
bucket.Insert<MyType>("JSON_" + guid, new MyType { Foo = "BarJSON"});
//读取文档并显示出来
var jsonBackOut = bucket.Get<MyType>("JSON_" + guid).Value;
Console.WriteLine($"JSON document: {jsonBackOut.Foo}");

存储XML

存储XML需要多做一点工作。首先,我使用XmlSerializer将对象序列化为XML字符串。然后,我将该值Insert成为一个字符串。为了将其读取出来,我再次使用xmlseralizer将其从字符串转换成为一个类型。

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。

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}");
}

总结

运行终端示例程序 (源代码在Github) produces:

                                                

当你运行上面的示例代码后,你会看到Couchbase控制台的显示如下:

non-JSON文档会和JSON文档存在同一个bucket中。但正如你所看到的,Couchbase服务器并不知道如何解释它们。所以,你不能对这些文件执行大多数的N1QL操作。你不能像JSON文档那样索引它们的值。并且,在使用.NET字节数组的情况下,一个非.NET程序将根本无法解释他们。

如果你能将数值存储到JSON文档中,我推荐你这样做。但是,Couchbase服务器为你提供了存储其它类型数值的灵活性。

本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接。 2KB翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。


2KB项目(www.2kb.com,源码交易平台),提供担保交易、源码交易、虚拟商品、在家创业、在线创业、任务交易、网站设计、软件设计、网络兼职、站长交易、域名交易、链接买卖、网站交易、广告买卖、站长培训、建站美工等服务

  • 全部评论(0)
资讯详情页最新发布上方横幅
最新发布的资讯信息
【计算机/互联网|】Nginx出现502错误(2020-01-20 21:02)
【计算机/互联网|】网站运营全智能软手V0.1版发布(2020-01-20 12:16)
【计算机/互联网|】淘宝这是怎么了?(2020-01-19 19:15)
【行业动态|】谷歌关闭小米智能摄像头,因为窃听器显示了陌生人家中的照片(2020-01-15 09:42)
【行业动态|】据报道谷歌新闻终止了数字杂志,退还主动订阅(2020-01-15 09:39)
【行业动态|】康佳将OLED电视带到美国与LG和索尼竞争(2020-01-15 09:38)
【行业动态|】2020年最佳AV接收机(2020-01-15 09:35)
【行业动态|】2020年最佳流媒体设备:Roku,Apple TV,Firebar,Chromecast等(2020-01-15 09:31)
【行业动态|】CES 2020预览:更多的流媒体服务和订阅即将到来(2020-01-08 21:41)
【行业动态|】从埃隆·马斯克到杰夫·贝佐斯,这30位人物定义了2010年代(2020-01-01 15:14)
联系我们

Q Q: 7090832

电话:400-0011-990

邮箱:7090832@qq.com

时间:9:00-23:00

联系客服
商家入住 服务咨询 投拆建议 联系客服
0577-67068160
手机版

扫一扫进手机版
返回顶部