gpt4 book ai didi

mysql - 用于创建用户段的最佳数据库结构

转载 作者:可可西里 更新时间:2023-11-01 11:25:46 30 4
gpt4 key购买 nike

我想创建一个分段引擎,但似乎无法找出用于该任务的最佳数据库或数据库结构。目前,我使用 MySQL 作为我的主要数据库,但分段引擎是一个单独的软件组件,因此如果适用,可以使用不同的数据库。

基本上,我有 1000 万个使用 UserID(整数)标识的唯一用户。分段引擎的管理员使用一些预定义的规则(如年龄范围、地理位置、交易历史等)动态创建分段。应用程序应定期(每 15 分钟一次)执行每个段的规则,以获取属于该段的所有用户(每个最多 100 万用户)的当前列表并存储。

稍后的应用程序将公开 API 以允许外部系统使用分段功能,即:1. 获取特定 UserID 所属的所有段的列表。2. 获取特定分割包含的所有 UserID 的列表。

请注意,由于段需要非常频繁地更新(每 15 分钟),这会导致数据库中的大量事务来“维护”段,应该删除不适用的用户并始终添加新用户。

到目前为止,我考虑了几种方法:1. 普通 MySQL,其中我有一个属于段(SegmentID、UserID)的用户表。 (这种方法有两个缺点:存储空间和 MySQL 中的不断删除/插入/更新,这将通过引入页面拆分来降低 innodb 性能)。

  1. 在 MySQL 中使用 JSON 数据类型,我可以在其中创建表 (UserID,Segments),其中段是一个包含 SegmentID 数组的 json。 (这里的缺点是搜索慢,更新慢)

  2. 将 Redis 与集合 (UserID,Segments) 结合使用,其中 UserID 将是键,而 Segments 将是 SegmentID 的集合。 (这里的缺点是没有简单的方法可以通过 SegmentID 进行搜索)。

有没有人做过类似的任务并且可以提供任何指导?任何反馈都将不胜感激,因此我可以指出我可以进一步研究的方向。

最佳答案

我想你可以使用 Elasticsearch为了这个任务。

关于mysql - 用于创建用户段的最佳数据库结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45599851/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com