【发布时间】:2016-10-27 22:00:12
【问题描述】:
我正在考虑使用Berkeley DB 作为高并发移动应用程序后端的一部分。对于我的应用程序,使用Queue 的记录级别锁定将是理想的。但是,如标题所述,我需要查询和更新在概念上建模为 Map<Number,Map<Number,Number>> 的数据。
外键将引用唯一的Item,内键将引用Item 的指标之一。内部值将是我需要以原子方式递增的计数器,可能非常频繁。因此,为什么记录级锁定在这里是一个理想的特性。理想情况下,记录级别类似于数据模型中的Item 级别。
数据将用于以下两种方式:
-
添加
<Number,Map<Number,Number>>条目- 比较少见
-
在给定
Itemid 和指标 id 列表的情况下,在数据库中以原子方式批量增加约 15 个指标然后,获取
Item的度量图- 非常频繁
内部Map 应该能够增长,但不会超过 200 个条目。
就是这样。
你觉得Berkeley DB会适合这个应用吗?
更新:
显然,我的数据架构不够清晰,所以我将进一步分解。
Item 有很多指标,每个指标都有一个计数器,即一对(多对一)即<Number,Map<Number,Number>>
但是我有很多Item,所以我需要的是Map<Number,Map<Number,Number>>
【问题讨论】:
-
您能否提供一个示例表(?)来明确您的数据架构,好吗?你想解决什么问题,我想不出 Map
> 解决的问题 -
Map
的键 Number 是不可变的吗? -
是否已经提供了数字键(内部和外部),或者您需要它们由数据库生成?
-
为什么需要关卡记录锁定? ACID 交易还不够吗? GPL 是一种选择吗?
-
您需要多处理和/或多线程吗?
标签: counter berkeley-db embedded-database