1
iyaozhen 2016-07-05 18:36:02 +08:00 via Android
→_→为什么要写日志到数据库,数据库远没有文件稳定呀。写数据库业务还要处理数据库的连接,效率和性能都不高。
分析日志然后入库有个专业术语叫 ETL ,简单的可以用 Python 、 shell 来做一天几百 g 的日志完全没问题,数据量大的就要用 Hadoop , spark 这一套了 |
2
sorra 2016-07-05 18:42:56 +08:00
大多数语言,只要支持文件流,一段一段读进来。例如 Java FileReader
|
3
b821025551b 2016-07-05 18:43:39 +08:00
日志有多大?每天到 Tb 级别了么?没到 Tb 用文本没什么问题, shell 脚本还是很强大的。
|
4
jugelizi 2016-07-05 19:04:30 +08:00
文件日志有什么问题?
|
5
9hills 2016-07-05 19:05:26 +08:00
你老大说的对,日志写数据库的才是脑抽。日志里提取的数据才需要写到数据库里
|
6
9hills 2016-07-05 19:05:55 +08:00
另外日志处理的速度基本取决于 IO 速度。。
|
7
fcicq 2016-07-05 19:06:18 +08:00
除了不能和结构化比压缩比以外没缺点. 数据库不好好搞根本达不到这个对比点.
|
8
qiayue 2016-07-05 19:06:32 +08:00
ZB 不成反被 C
|
9
Jaylee 2016-07-05 19:25:28 +08:00
小伙子 你要走的路还长啊
|
10
h4x3rotab 2016-07-05 19:44:46 +08:00 via iPhone
导入分布式文件系统跑 mapreduce
|
11
xuboying 2016-07-05 19:47:37 +08:00 via Android
也有运维用 elk 作为解决方案,类似数据库,当然纯文本数据分析绝对是 Perl/Python 的天下。
|
12
cszhiyue 2016-07-05 19:53:35 +08:00
你们老大说得对
|
13
changshu 2016-07-05 20:06:21 +08:00
如果数据库指的是关系数据库的话, 你老大干得对
|
14
3dwelcome 2016-07-05 20:09:02 +08:00 via Android
大家没理解楼主的意思…楼主是问如何 sql 语句来解析文本 log 。
没数据库无所谓…没 select 可怎么活。 |
15
omengye 2016-07-05 20:14:52 +08:00
之前用 c++读文本文件,十多个 G 也就几秒钟读个遍。只需要把文件中需要的东西整理出来入库我觉得就行,两个程序一个读、一个入库方便查询。如果只是用来统计日志信息的
|
16
droiz 2016-07-05 21:36:03 +08:00
日志写文件里很正常+正确+普遍啊,,,
|
17
gulucn 2016-07-05 23:20:47 +08:00
你老大说的对,正确的处理流程应该是程序写日志,然后工具扫描日志进行处理,可以导入数据库或其他处理的。
|
18
qqmishi 2016-07-05 23:30:15 +08:00
日志不处理直接写到数据库才叫好玩, linux 下用 sed 、 awk 、 grep 三个可以很好的处理大型文本文件了
|
19
ototsuyume 2016-07-06 00:18:37 +08:00
有些日志可以写入 OLAP 做优化的 db 方便做分析,比如广告点击的 log 。但是假如你的日志是单纯用来 debug 的那写数据库就是脑抽了
|
20
m939594960 2016-07-06 09:05:41 +08:00
围观楼主被打脸
|
21
testlc 2016-07-06 09:20:40 +08:00
有相对固定的格式,就映射到内存用 c 去抠字节。
|
22
zander1024 OP 啪啪啪 脸好疼 我也没描述清楚... 现在是来分析用户对战纪录等一些结构化数据日志, 我觉得用文本形式还得把字符串解析成运营能看懂的表格模式... 数据库可以直接查,文本型不太方便
|
23
domty 2016-07-06 11:46:47 +08:00
@zander1024
你完全可以写个定时脚本去分析日志然后转存。 实时记录日志,如果日志内容过多的话会给影响相应速度的吧。 也可以搞个消息队列之类的东西。操作完成后给队列插一条消息让消息队列自己去记录日志。 |