这是 MongoDB 用例吗?

Is this MongoDB use case?

我有一个约会网站,我在其中发送每日提醒并在 ALERTS_LOG 中记录提醒。

CREATE TABLE `ALERTS_LOG` (
  `RECEIVERID` mediumint(11) unsigned NOT NULL DEFAULT '0',
  `MATCHID` mediumint(11) unsigned NOT NULL DEFAULT '0',
  `DATE` smallint(6) NOT NULL DEFAULT '0',      
  KEY `RECEIVER` (`RECEIVER`),
  KEY `USER` (`USER`)
) ENGINE=MRG_MyISAM DEFAULT CHARSET=latin1 INSERT_METHOD=LAST UNION=(`ALERTS_LOG110`,`ALERTS_LOG111`,`ALERTS_LOG112`)

插入逻辑:我创建了合并 table 并且每个子 tables 像 ALERTS_LOG110 存储 0-15 天的记录.在每 1 日和 16 日,我创建一个新的 table 并更改 mergeMyisam 的定义。 示例:INSERT_METHOD=LAST UNION=(ALERTS_LOG111,ALERTS_LOG112,ALERTS_LOG113).

优点: 删除超快

这种方法的问题: 1. 当我更改定义时,我经常遇到站点关闭问题,因为当我更改定义时,索引需要进入缓存并且所有 select 查询都卡住了。 2. 插入过多导致锁定问题 select.

那么,我可以看看 MongoDB 来解决这个问题吗?

不,不是真的。由于此日志的性能,重新设计您的应用程序以使用两种不同的数据库类型 table 似乎是一个糟糕的选择。

不太清楚为什么要记录这么多条目,但从表面上看可能想查看 partitioning in MySQL 并按天或周对 table 进行分区,然后删除那些分区。删除仍然非常快,并且不会有停机时间,因为您不会每天都更改对象名称。