不懂就问,如何高效地存储服务日志?
資深大佬 : naoh1000 0
前端在写自己项目的时候想到的一个问题。偶尔在后台中分析和查看的日志保存在文件中还是数据库中效率更高?查了一些资料看起来是数据库效率更高,那为什么大部分开源项目使用的都是文件存储日志?
大佬有話說 (18)
第二个问题,因为小项目日志怎么搞无所谓,大项目必须要 高性能,高搜索支持度,结构一致,以及便捷的支持后续的数据分析
第二问题,跟你的观点一致,额外补充:①数据库比较占内存,而文件只是占磁盘;②一般应用日志跟业务无关,应独立出来,避免占用“业务数据库”资源。
@naoh1000 所以开源项目“默认使用”文件存储日志,可能是考虑项目初期(小项目)服务器的资源问题。等项目大了,可以把日志的存储配置改成数据库,单独搞一个的“日志数据库”,或者上 ES 、ELK 等等。
文件顺序写 IO 即可,数据库即使不算事务,也有数据库自己的处理逻辑,总归是慢一点的
另外,日志没有不切分的,按规则切分,配合 grep,awk 之类的,比数据库方便多了
例如,查询包含 error 字符串的日志,数据库就很麻烦
如果你真想学明白,可以去搜搜国内 TOP5 计算机本科或软件本科的科目,然后去找相关教材学习。
如果只是想随便了解下,一兄弟给的方案就不错,或者自己把几种方案都尝试一下也行。只是,一旦遇到问题,或者结论与你设想的不一样,没有足够的知识,你是没办法查明问题的根源所在。