- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
假设存储桶中有大量数据(> 100GB,> 100M文档,> 12种文档类型),并且每个 View 仅适用于一种文档类型,则每个存储桶有多少个 View 太多?或以另一种方式问到,应在什么时候将某些文档类型拆分为单独的存储桶,以节省处理所有文档类型的所有 View 的开销?
我很难决定如何将我的数据拆分为“基于基准”的存储桶,以及如何确定数据所需的 View 对性能的影响。我的数据由十几个关系数据库组成,其中至少有一半包含许多表中的亿万行。
http://www.couchbase.com/docs/couchbase-manual-2.0/couchbase-views-writing-bestpractice.html doc部分的“使用文档类型”似乎暗示在同一存储桶中具有多个文档类型不是理想的,因为针对所有文档更新了特定文档类型的 View ,即使是那些永远不会与该 View 匹配的 View 。实际上,它建议将数据分成多个存储桶以避免这种开销。
但是出于性能原因,每个群集最多只能有10个存储桶。因此,我唯一的结论是,每个集群最多可以有效处理10个大型文档集合。这是正确的吗?
最佳答案
Tug的建议是正确的,并允许我也添加一些观点。
可以将存储桶视为与RDMS世界中的“数据库实例化”最密切相关(尽管不完全相同)。该“数据库”中将有多个表/方案,并且它们都可以在存储桶中组合。
将存储桶看作是逻辑数据分组,它们都共享一些公共(public)配置参数(RAM配额,副本计数等),并且仅在需要单独控制某些数据集时才需要将数据拆分为多个存储桶。其他原因与不同数据集的工作量非常不同,或者与能够分别跟踪这些数据集的工作量有关。
一些例子:
-我要控制一组数据的缓存行为与另一组数据不同。例如,许多客户有一个“ session ”存储桶,他们一直希望在RAM中,而他们可能有一个较大的“用户配置文件”存储桶,不需要所有在RAM中缓存的数据。从技术上讲,这两个数据集可以驻留在一个存储桶中,并允许Couchbase明智地将哪些数据保留在RAM中,但是您没有太多保证或控制该 session 数据不会被推出...因此它在自己的存储桶中可让您强制执行该操作。它还给您带来了额外的好处,就是能够分别监视该流量。
-我希望某些数据比其他数据被复制更多次。虽然通常在大多数集群中建议只使用一个副本,但是有时我们的用户会选择他们想要复制额外时间的某些数据集。可以通过单独的铲斗进行控制。
-沿着同一行,我只希望将某些数据复制到另一个群集/数据中心。每个存储桶也对此进行了控制,因此可以将数据拆分到一个单独的存储桶中。
-当您在给定数据集的工作量(尤其是写入量)方面存在相当大的差异时,从 View /索引的角度来看,将数据分成单独的存储桶确实是有意义的。我提到这一点是因为这是事实,但我也想明确一点,这不是常见的情况。您应该在发现问题之后而不是在您认为可能会出现之前使用此方法。
关于最后一点,是的,索引引擎将提取对存储桶的每次写入,但是通过使用JSON中的文档类型,您可以非常快速地中止对给定文档的处理,这实际上不会对包含大量数据,不适用于某些 View 。如果您不介意的话,我特别好奇文档的哪些部分暗示了其他内容,因为那当然不是我们的意图。
因此,一般而言,我们看到大多数部署的存储桶数量很少(2-3),而存储桶数量很少,只有5个以上。我们限制为10,这是由于我们内部跟踪统计信息(负载或负载)的一些已知CPU和磁盘IO开销在此处缺少存储区无关紧要)。我们当然计划在将来的发行版中减少这种开销,但这仍然不会改变我们建议只使用几个存储桶的建议。能够将多个“方案”组合到一个逻辑分组中并在其中始终应用 View /索引的优点仍然存在。
我们现在正在提出更具体的指南并确定建议大小(直到我们这样做之前,我都是将前两个博客写成一个权宜之计)。
作为初始方法,您希望尝试将设计文档的数量保持在4个左右,因为默认情况下,我们最多并行处理4个文档。您可以增加此数字,但是应该与增加的CPU和磁盘IO容量相匹配。然后,您将希望使每个文档中的 View 数量相对较少,可能远低于10,因为它们都是按顺序处理的。
最近,我与一个拥有大量 View (大约8个设计文档,而一些dd拥有近20个 View )的用户一起工作,并且我们能够通过将多个 View 组合为一个 View 而大大降低了使用率。显然,它非常依赖于应用程序,但是您应该尝试根据一个索引生成多个不同的“查询”。通过使用归约,键前缀(在 View 内)和排序规则,将它们与不同的范围和分组查询结合使用,可以使单个索引乍看起来可能很拥挤,但实际上非常灵活。
设计文档和 View 越少,所需的磁盘空间,IO和CPU资源就越少。不幸的是,永远不会有神奇的子弹或一成不变的准则数字。最后,YMMV和在您自己的数据集上进行的测试比我能写的任何多页响应都要好;-)
希望对您有所帮助,如果您对不想发布的特定用例有特定疑问,请不要犹豫,直接与我们联系。
佩里
关于performance - 每个存储桶的最大沙发床 View 数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14979382/
关闭。这个问题是opinion-based .它目前不接受答案。 想改善这个问题吗?更新问题,以便可以通过 editing this post 用事实和引文回答问题. 8年前关闭。 Improve t
暂时忘记能力的定义,只关注能力的“检查”(使用“授权!”),我看到 CanCan 添加了大约 400 毫秒,用于简单地检查用户是否具有特定的能力主题/模型。 这是预期的吗(我假设不是)?或者,有没有可
我正在阅读有关 Swift 的教程 ( http://www.raywenderlich.com/74438/swift-tutorial-a-quick-start ),它预定义为不显式设置类型,因
这主要是由于对 SQL 问题的回答。由于性能原因,有意省略了 UDF 和子查询。我没有包括可靠性并不是说它应该被视为理所当然,但代码必须工作。 性能永远是第一位的吗?提供了许多以性能为主要优先事项的答
我已经编写了一个简单的测试平台来测量三种阶乘实现的性能:基于循环的,非尾递归的和尾递归的。 Surprisingly to me the worst performant was the loop o
我已将 ui-performance 插件应用到我的应用程序中。不幸的是,在开发模式下运行应用程序时它似乎不起作用。例如,我的 javascript 导入是用“vnull”版本呈现的。 例如 不会
我有一个我操作的 F# 引用(我在各处添加对象池以回收经常创建和删除的短期对象)。我想运行结果报价;现在我使用了 F# PowerPack,它提供了将引用转换为表达式树和委托(delegate)的方法
我正在尝试在 Spark 服务器上运行 SparklyR 库中的机器学习算法。 1 个簇 8 核 24G内存 Ubuntu 16.04 星火2.2 独立配置 1名师傅/2名 worker 每个执行器的
我有一个数据库(准确地说是在 postgres 上运行),具有以下结构: user1 (schema) | - cars (table) - airplanes (table, again) .
我的应用程序在我的 iPad 上运行。但它的表现非常糟糕——我的速度低于 15fps。谁能帮我优化一下? 它基本上是一个轮子(派生自 UIView),包含 12 个按钮(派生自 UIControl)。
在完成“Scala 中的函数式编程原则”@coursera 类(class)第 3 周的作业时,我发现当我实现视频类(class)中所示的函数联合时: override def union(tha
我正在重构我的一个 Controller 以使其成为一项服务,我想知道不将整个服务容器注入(inject)我的 Controller 是否会对性能产生影响。 这样效率更高吗: innova.path.
我有一个要显示的内容很大的文件。例如在显示用户配置文件时, 中的每个 EL 表达式需要一个 userId 作为 bean 的参数,该参数取自 session 上下文。我在 xhtml 文件中将这个 u
我非常了解 mipmapping。我不明白(在硬件/驱动程序级别)是 mipmapping 如何提高应用程序的性能(至少这是经常声称的)。在执行片段着色器之前,驱动程序不知道要访问哪个 mipmap
这个问题在这里已经有了答案: 10年前关闭。 Possible Duplicate: What's the (hidden) cost of lazy val? (Scala) Scala 允许定义惰
一些文章建议现在 build() 包含在 perform() 本身中,而其他人则建议当要链接多个操作时使用 build().perform()一起。 最佳答案 build() 包含在 perform(
Postgres docs说 For best optimization results, you should label your functions with the strictest vol
阅读Zero-cost abstractions看着 Introduction to rust: a low-level language with high-level abstractions我尝
我想在 MQ 服务器上部署 SSL,但我想知道我当前的 CPU 容量是否支持 SSL。 (我没有预算增加 CPU 内核和 MQ PVU 的数量) 我的规范: Windows 2003 服务器 SP2,
因此,我在 Chrome 开发者工具 的性能 选项卡内的时间 部分成功地监控了我的 React Native 应用程序的性能。 突然在应用程序的特定重新加载时,Timings 标签丢失。 我已尝试重置
我是一名优秀的程序员,十分优秀!