iOS 和 Mysql 事件

iOS and Mysql Events

我正在开发一个连接到 mysql 后端的应用程序。这与 snapchat 有点相似,因为一旦当前用户从他们关注的用户那里获得照片并看到它们,他们就再也看不到这些照片了。但是,我不能只从数据库中删除图片,上传图片的用户仍然需要查看它们。所以我想出了一个有趣的设计,我想知道它好不好。

上传图片时,我还会创建一个 mysql 事件,该事件会在图片上传一天后的同一时间 运行 自行删除。如果我一直有人上传图片,事件就会一直创建。这对 mysql 数据库有何影响。这甚至可以扩展吗?

不,不可扩展:删除单个记录很快,但是如果您的数量增加,您 运行 就会遇到麻烦。但是,您确实有一个使用分区的经典案例:

Create table your_images (insert_date DATE,some_image BLOB, some_owner INT)
ENGINE=InnoDB /* row_format=compressed key_block_size=4 */
PARTITION BY RANGE COLUMNS (insert_date) 
PARTITION p01 VALUES LESS THAN ('2015-07-12'),
PARTITION p02 VALUES LESS THAN ('2015-07-03'),
PARTITION p0x VALUES LESS THAN (ETC),
PARTITION p0n VALUES LESS THAN (MAXVALUE));

然后您可以像往常一样插入,每天删除一次分区(对所有数据使用 1 个事件),每天也创建一次新分区(使用删除旧分区的同一事件分区)。

为了确保照片至少保留 24 小时,分区清理必须延迟 1 天进行(因此在前天清理,而不是昨天本身)。

仍然需要在从数据库中获取图像的查询中使用日期过滤器,以防止显示的图像早于某一天。