AEROSPIKE上是否有NO KEY或自动增量策略可用于唯一键?

时间:2018-04-24 21:39:23

标签: aerospike

我们正在尝试使用Aerospike实施日志记录或统计数据。我们有用户登录,Anonymus用户向我们的主数据库发出查询,我们希望存储它所做的每一个请求。

到目前为止,我们最好的方法是使用UserID作为键存储记录,将查询关键字存储为List,如下所示:

{
    Key: 'alacret'
    Bins:{
        searches: [
            "something to search 1",
            "something to search 2",
            "something to search 3",
            ...
        ]
    }
}

作为应用程序架构师,回顾一下,我遇到了几个性能/设计缺陷:

1)检索和存储是两个操作,获取所有列表,追加,然后再次放置似乎效率低下或次优 2)通过两次操作意味着我必须在交易中做两件事,以防止加速条件,我认为这会杀死Aerospike的表现 3)文档说明列表是大小有限数据的数据结构,所以如果我理解正确,不能很好地扩展,特别是对于会以指数方式增加列表大小的匿名用户。

作为替代方案,我建议将userID作为Bin移动,并生成一个防止加注条件的Key,并将保存操作保持为单个操作,而不是事务中的几个。

所以,我正在寻找的是意见和验证。

问候

1 个答案:

答案 0 :(得分:2)

您可以附加到列表或前置。您也可以通过修剪它来限制它,如果超出一定的限制,您不必关心存储搜索项目,即您只想在您的用户ID搜索列表中存储100个最新项目。您可以执行追加和修剪,然后在一个锁中读回更新的列表。如果要存储在磁盘上,则记录大小限制为1MB,包括所有开销等。如果仅将数据存储在RAM中,则可以存储更大的记录大小。 (存储引擎内存)。这是否适合您的应用需求?