我正在进行一些日志文件解析,目的是通过使用 SQLite 作为后端的Web应用程序来访问结果。因为它是基于网络的,我需要针对SELECT
查询优化速度。
我也希望尽可能减少数据库的文件大小。
数据加载是一个单独的过程,我更喜欢进行所有数据争用,因此获取数据是一个简单的“选择”,并且不需要进一步的服务器端/客户端处理。
示例输入
date layer format code
2014-05-06 18:09 beta jpeg 27700
2014-05-06 19:52 beta jpeg 27700
2014-05-07 00:10 beta png 4326
2014-05-07 01:25 alpha png 4326
2014-05-07 01:35 beta png 27700
2014-05-07 10:15 beta png 27700
2014-05-07 10:20 alpha jpeg 43262
2014-05-07 18:00 beta png 27700
2014-05-07 18:02 beta jpeg 27700
2014-05-07 18:03 beta jpeg 27700
2014-05-07 18:05 beta jpeg 27700
2014-05-07 19:17 alpha jpeg 4326
2014-05-07 20:46 beta jpeg 27700
有数百万行,数百个图层,十几种+格式,以及大约5000种可能的代码。
由此我计划使用一系列视图从其所处的任何结构中提取数据。我预计在执行此部分时不会出现任何问题,这只是我正在努力的结构。
示例输出
下面是一系列选择,展示了我希望提取的东西。
--This one for example might have a `group by month` clause in the View
select * from layer_view
layer count
alpha 3
beta 10
--sum of all formats
select * from format_view
format count
png 6
jpeg 7
--Formats that are used by the "alpha" layer.
select * from layer_format_view where layername = "alpha"
format count
png 1
jpeg 2
--sum all codes codes
select * from code_view
format count
4326 4
27700 9
--codes that are used by the "beta" layer.
select * from layer_format_view where layername = "beta"
code count
4326 1
27700 9
--I also want to be able to pull by date and it'll show the number of entries
select * from date_view where layer = "beta" [grouping by day]
date count
2014-05-06 2
2014-05-07 8
希望很清楚。所以考虑到这一点,我应该使用什么样的结构? 感谢。