例如,有5个对象存储。我正在考虑将文档插入其中,但不是按顺序插入。最初,它可能是顺序的,但如果我可以使用某种排序方法插入,那么就更容易知道要搜索哪个对象存储来查找文档。目标是减少对象存储搜索的次数。这只有在插入使用某种智能算法的情况下才能实现。
我发现一种有用的方法是使用当前年份的MOD N(对象存储的数量)来确定文档的位置。我们能找到更好的方法吗?
如果您想要快速访问,有几个标准:
-
散列函数必须基于所查询的数据是可再现的。这意味着,这在很大程度上取决于您期望的查询。
-
您通常希望将对象尽可能均匀地分布在各个存储中。如果要并行,则需要从不同的存储访问给定查询的每个文档,这样它们就不会相互阻塞。因此,您的哈希函数应该尽可能多地分布到类似文档的不同存储中。如果希望与同一查询相关的文档来自同一年份,请不要直接使用该年份。
这是假设,您希望能够拥有可以并行的快速查询。如果您有一个系统,在该系统中,您首先必须打开与商店的潜在昂贵连接,那么与同一查询相关的大多数文档都应该放在同一商店中,您不应该接受我上面的建议。
您对"FileNet对象存储中的内容?"的标准基本上是"哪些文档在逻辑上属于一起?"。
这是一个旧线程,但思想严重错误。object_id是给定数据库/模式中唯一的数据库键。您打算为COTS应用程序创建一个外部前端,然后在多个数据库中进行搜索?首先,你不应该在DB Blob中存储超过4k的数据,所以即使你有单独的物理数据库,最大的延迟也将来自存储I/O。要在多个存储子系统之间分配I/O,请在存储策略中添加多个存储区域,以便它们循环使用。你可以使用一个过滤器来引导paulsm询问/暗示的内容。如果检索性能真的是一个问题,那么应该在系统规模和设计中解决这个问题。使用一致性检查器作为基准,主机具有多路径光纤SAN网络的虚拟机运行速度约为80000个文档/分钟。相比之下,使用NFS进行存储的虚拟机几乎无法达到80个文档/分钟。这是性能的1/1000。如果你花7位数购买软件许可证,并雇佣最便宜的资源来设计/构建/管理你的系统,那你就是在浪费钱。