Java 我应该将Couchbase bucket视为表,还是更像一个模式
我计划在我的web应用程序中使用Couchbase作为文档存储。我正在研究Couchbase client for Java,如果我像对待一般实体一样对待Couchbase bucket,那么您需要为每个bucket创建单独的Couchbase client。这对系统来说有点过分(尽管如此,我可以重用正在执行的服务来最小化对象创建和线程管理开销) 所以Java 我应该将Couchbase bucket视为表,还是更像一个模式,java,performance,nosql,couchbase,Java,Performance,Nosql,Couchbase,我计划在我的web应用程序中使用Couchbase作为文档存储。我正在研究Couchbase client for Java,如果我像对待一般实体一样对待Couchbase bucket,那么您需要为每个bucket创建单独的Couchbase client。这对系统来说有点过分(尽管如此,我可以重用正在执行的服务来最小化对象创建和线程管理开销) 所以 有没有一种方法可以为多个bucket重用现有的CouchbaseClient(不仅仅是添加ExecutionService) 从性能的角度来看,
您应该将couchbase bucket视为数据库。在大多数情况下,每个应用程序一个bucket就足够了。但我更喜欢两个桶。一个用于公共数据,另一个用于“临时”或“快速变化”(如缓存、用户会话等)数据。最后,您甚至可以只使用memcached bucket 并回答您的两个问题:
test
数据库。Couchbase内置了独立的dev
和production
视图,您可以使用dev
视图轻松地在生产数据上测试应用程序关于使用bucket作为表/数据库,这篇文章很好地解释了:
视图是否存在性能缺陷,因为它们需要处理所有数据,而不管其相关性如何?视图在后台处理所有数据。所以,当您的查询到达时,他们不会“选择”数据,数据已经被选择,服务器只会对预定义的数据集进行缩减(如果必要的话)并将其发送到客户端,除非您向视图发送特殊参数,这将迫使它在发送到客户端之前更新索引。也就是说,如果您的map函数将有一些
if
语句,如if{doc.type==='sometype'}
,那么您的视图将只使用预先计算的一组指定类型的文档进行操作。下面是指向couchbase doc的关于视图的链接。只有在现有大型数据库上创建新视图时,速度才会变慢。所有更新(添加新文档、删除文档)都应该是快速的。