7

我打算在我的 Web 应用程序中使用Couchbase作为文档存储。我正在查看Java的 Couchbase 客户端,如果我像对待通用实体一样对待 Couchbase 存储桶,您需要为每个存储桶创建单独的Couchbase 客户端。这对系统来说有点矫枉过正(不过,我可以重用正在执行的服务来最小化对象创建和线程管理开销。)

所以

  1. 有没有办法为多个存储桶重用现有的 CouchbaseClient(不仅添加 ExecutionService)
  2. 从性能的角度来看,使用单桶,并根据键区分对象,并依靠视图选择器进行查询不是更好吗?
4

2 回答 2

10

您应该将 couchbase 存储桶视为数据库。在大多数情况下,每个应用程序一个存储桶就足够了。但我更喜欢有 2 个桶。一种用于公共数据,另一种用于“临时”或“快速变化”(如缓存、用户会话等)数据。最后一个目的,您甚至可以只使用 memcached 存储桶。

并回答您的 2 个问题:

  1. 我不知道这种方式,也从未见过有人试图这样做。但请记住,客户端应该实现单例模式。因此,如果您的应用程序有 2 个存储桶,那么您将只有 2 个客户端(这绝对不会过度杀伤力)

  2. 正如我之前所说,将存储桶视为数据库。你甚至不需要创建test数据库。Couchbase 具有内置的分离视图devproduction视图,您可以使用dev视图轻松地在生产数据上测试您的应用程序。

于 2013-11-11T08:28:43.130 回答
4

关于使用存储桶作为表/数据库,这篇文章很好地解释了:http: //blog.couchbase.com/10-things-developers-should-know-about-couchbase

  1. 从一个桶中的所有内容开始

一个桶相当于一个数据库。您将具有不同特征或属性的对象存储在同一个存储桶中。因此,如果您要从 RDBMS 迁移,您应该将来自多个表的记录存储在一个存储桶中。

请记住创建一个“类型”属性,该属性将帮助您区分存储在存储桶中的各种对象并在它们上创建索引。建议从一个桶开始,必要时增长到更多桶。

于 2015-08-18T02:17:14.193 回答