[英]How to store device tokens in our database for push notifications?
我们正在为我们的应用设置推送通知,发现如果将用户设备令牌存储在users表中,则会遇到一些问题。
我们的用户表:
| id (user pk) | ... other fields | device_token (for push notifs) |
其他两种解决方案是:
我想知道其他人怎么做以及这些解决方案是否可以通过任何方式进行改进?
我认为您应该尝试:用这种方式将JSON数组存储在users表中是清楚的,最适合优化Json文档,例如:
{
user_id : "user id",
list_devices_token : [....];
}
目前尚不清楚您使用的是哪个数据库,但是如果它是关系数据库(例如MySQL),则比JSON数组会违反良好数据库设计的第一种常规形式 。 在我看来,这是一个入门者。
考虑到您说过只会向一台设备发送推送通知,因此在用户表上存储单个设备ID是一个不错的解决方案。 但是在我看来,此方法有两个缺点(并不是说这是错误的 ,而是要考虑的事情):
app_version
添加至少一列。 进一步扩展它( date_last_notified
? device_type
?等),您突然在用户表中添加了很多额外的列,这些列可能与用户实体显然不相关。 这将违反关系数据库设计的第二种普通形式 ,因为您的新用户列将不再描述用户实体。 指向用户的设备ID的额外表确实增加了一些复杂性,但这就是关系数据库的设计目的。
我的建议是现在为它提供一个单独的表,但是如果您要在用户表上使用一列来构建它,也很好-在重构的时候就做好准备(并且毫不畏惧)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.