使用同上的批量 CRUD
Posted
技术标签:
【中文标题】使用同上的批量 CRUD【英文标题】:Bulk CRUD with Ditto 【发布时间】:2021-04-18 14:34:55 【问题描述】:我们想在同上处理大量的事情。所以我的问题是:有没有办法批量创建/读取/更新/删除?我在 Ditto 中编写了一个更新事物的 10.000 个功能的测试,这花费了 2 分钟以上。我认为这主要是由于发出 10.000 个 HTTP 请求而不是 MongoDB 性能 - 批量操作可以解决这个问题。
提前致谢
Thomas
【问题讨论】:
【参考方案1】:Eclipse Ditto 当前不支持批量更新。 如果这是你的要求,我建议open an issue in the Eclipse Ditto repository,在那里可以讨论。
如果您想摆脱 10.000 次握手(每个 http 请求)的开销,您还可以切换协议并使用 websockets 或 Eclipse Ditto 的连接 API。这应该已经提供了性能改进。
【讨论】:
非常感谢,我先试试 websockets。并在打开请求之前在这里分享我的经验。 也许同上的 java 客户端可以提供任何帮助。它使用 websocket 协议github.com/eclipse/ditto-clients/tree/master/java【参考方案2】:这是我的结果:
REST1: 2000 things created, 0 things rejected, in 67.496 seconds -> 29.6 create/s
REST1: 2000 things' features created, 0 features rejected, in 54.492 seconds -> 36.7 features/s
REST1: 20000 things' features updated, 0 updates rejected, in 523.521 seconds -> 38.2 updates/s
REST1: 993 results of 2000 by search, in 1.788 seconds -> 555.3 results/s
REST1: 2000 things deleted, in 50.861 seconds -> 39.3 deletes/s
REST32: 2000 things created, 0 things rejected, in 22.779 seconds -> 87.8 create/s
REST32: 2000 things' features created, 0 features rejected, in 20.654 seconds -> 96.8 features/s
REST32: 20000 things' features updated, 0 updates rejected, in 187.385 seconds -> 106.7 updates/s
REST32: 968 results of 2000 by search, in 1.918 seconds -> 504.7 results/s
REST32: 2000 things deleted, in 19.617 seconds -> 102.0 deletes/s
WEBSOCKET: 2000 things created w websocket, in 33.082 seconds -> 60.5 create/s
WEBSOCKET: 2000 features created, in 33.119 seconds -> 60.4 creates/s
WEBSOCKET: 20000 features modified, in 263.630 seconds -> 75.9 mods/s
WEBSOCKET: 2000 things deleted w websocket, in 24.360 seconds -> 82.1 deletes/s
REST1 结果来自 1 个线程的 ThreadWorker Pool,REST32 池有 32 个线程,并行触发 32 个请求。
最好的 托马斯
【讨论】:
以上是关于使用同上的批量 CRUD的主要内容,如果未能解决你的问题,请参考以下文章
SpringBoot整合ElasticSearch实现模糊查询,批量CRUD,排序,分页,高亮