我是 Couchbase 和 NoSql 的新手,所以我想知道使用 Couchbase 作为 NLog 日志记录的目标是否可行。我写了一个快速而肮脏的 Couchbase/NLog 目标,它确实将信息记录在指定的存储桶中。所以写信给 CB 就完成了,而且工作正常。
我看到的问题是从存储桶中获取/读取数据。我不知道键名……它们只是随机的向导。我只想转储数据,而 CB 1.8 不支持从 .NET 客户端获取所有密钥。
因此,如果我想制作一个查看器应用程序来查看存储桶中的数据,我该从哪里开始呢?
您必须将每个密钥及其元数据存储在 ram 中。我怀疑你想对日志这样做。
您可能想要存储在 ElasticSearch 中。有一个叫做 Nest 的 .net 客户端,或者你可以只做 json 帖子。Elasticsearch 在文档和内存之间没有 1:1 的关系。
使用 map reduce 视图,您可以使用下面的 doc.key 获取所有键的列表,或者如果您想要键 (id) 和完整文档,则只需发出 doc。这仅适用于 couchbase 2.0 及更高版本。
function (doc, meta) {
if(meta.type == 'json') {
emit(doc.key, null);
}
}
您可以使用 cbbackup 工具转储所有数据访问http://www.couchbase.com/docs//couchbase-manual-2.0/couchbase-backup-restore-backup-cbbackup.html
Couchbase 还支持在管理控制台中使用 XDCR 将数据复制到弹性搜索节点/集群。访问http://docs.couchbase.com/couchbase-elastic-search/
使用 Couchbase Server 3.x,您现在可以从 RAM 中弹出元数据和文档数据。此功能允许 Couchbase Server 3 存储非常大的数据集,并允许您在 RAM 中以增量方式索引更新,即使在大型或高速数据集上也是如此。
此外,正如其他人所指出的,Couchbase 服务器具有适用于 Lucidworks Solr、ElasticSearch、Splunk 等的插件。
试试 Couchbase 3.0,亲自看看吧!