Piwik的数据库结构图,Piwik的数据库结构讲解
存档表里的每条记录都是由存档处理类进行自动处理的,其中存档处理有多个类:记录管理的是Piwik_ArchiveProcessing_Record_Manager,数值记录的
Piwik_ArchiveProcessing_Record_Numeric,
blob记录的是Piwik_ArchiveProcessing_Record_Blob和字符串blob记录的
Piwik_ArchiveProcessing_Record_Blob_Array。
存档的逻辑可以在Piwik_ArchiveProcessing类中找到,按日存档可以从
Piwik_ArchiveProcessing_Day类中找到,按时间点的存档可以从
Piwik_ArchiveProcessing_Period类中找到。需要注意的是大多数实时处理的存档都是通过插件来执行特殊的事件。
加载存档(或加载处理中的存档)是使用Piwik_Archive类完成的。
从性能上考虑,表按月划分。这就意味着每个月新标就会创建,所以数据会被有规律的划分。如果值使用一张表来储存所有数据,它将变的非常的巨大且查询起来非常的缓慢。数据表划分由Piwik_TablePartitioning类进行处理,按月划分的由Piwik_TablePartitioning_Monthly类完成。
我们使用不同的表结构(FLOAT 和 BLOB),因为它可以非常快速的查询整型/浮点数值。SQL查询会因为数据表非常的轻量(light)而非常的快(并且archive_numeric_* 的每行有固定的长度)。比如我们可以快速的查询最近30天的访客数。
Debug / Info log
表logger_error, logger_message, logger_api_call 和 logger_exception 是用来记录各种各样信息的。
logger_error 是用来记录错误信息。message 中包含line, php
file errfile,backtrace。等。
logger_message 是用来记录所有的调试和系统信息的。
logger_api_call 是用来记录所有的API请求的。他会记录所有的请求参数
(parameter_values)和返回的值(returned_value)、执行时间
(execution_time)和请求地址的IP地址(caller_ip)等。这个信息又来使API请求更加的具体,当返回的值(returned_value)不正确的时候用于调试,监测API接口的使用情况等。
logger_exception 是用来记录所有的异常的。
而整体的逻辑控制是由Piwik_Log来完成的。
SQL query profiling
表log_profiling是用来储存SQL查询的概要信息的。
其他