我为我的网站构建了一种登录系统,我想在数据库中记录用户的活动。问题在于每次都存储用户的IP。
我的用户表中包含用户的所有详细信息,例如用户名,密码等。但是,如果我要添加另一个包含IP的列,则只能存储它(我知道) )是JSON类型的格式(TEXT格式)。所以它会是这样的:
用户名:theuser 密码:密码 等等... 知识产权:{' 27/04/2018 13:05':' 127.0.0.1',' 28/04/2018 16:28':&#39 ; 127.0.0.2',etc}
但是...
1)存储类似的IP是否有效?
2)如果是,那么我如何每次更新日期和IP,以便它不会删除以前的那些?
3)如果不是使用同一个表,我将创建一个新表,比如" users_IPs",然后将用户ID存储在那里,然后将使用相同的TEXT(JSON-像格式)存储IP,会更有效吗?
如果您认为有更好的方式处理此类事情,欢迎您与我分享您的想法。
答案 0 :(得分:0)
将日志存储为JSON既不高效也不实用。
作为JSON字符串的IP列表将占用更多磁盘空间。同时这样的列表更难搜索 - 在某些时候,您可能希望使用这些日志通过IP搜索用户或显示每日登录数据。如果你需要操作JSON字符串而不是使用适当的模式的单独表,这将更加困难。
这也会减慢更新速度。对于每个新IP,您需要更新整个JSON,因此如果您有100个已保存的IP,并且想要添加新IP,则需要在数据库JSON中保存101条记录。在单独的表中插入单个记录应该更有效(并且更容易修剪旧数据)。
除非:
a)您希望保持这种简单,并且您不希望以这种方式存储大量数据,也不希望经常更新它,
b)您需要经常访问用户日志,select
性能比日志更新重要得多,
我建议为登录日志创建一个单独的表,其中每行代表单个登录事件。这是更安全的解决方案 - 更好地扩展,更实用。