小编How*_*ard的帖子

星型模式数据仓库中动态字段的 EAV 替代方案

我需要在大数据仓库中支持动态字段和值来存储 API 请求日志,我的用户案例是我需要存储所有 API 请求查询字符串并能够在未来对它们执行查询(所以它不仅仅是存储,所以我不能为他们使用 blob)

例如 http://example.com/?action=test&foo=abc&bar=def...

我需要存储所有field => value映射,即(action => test), (foo => abc), (bar => def),由于该字段是如此动态,我找到的唯一解决方案是使用 Entity-Attribute-Value,但是,人们一直说这是一个非常糟糕的设计。

那么,考虑一下我上面的用例,什么是 EAV 的合适替代品?

我当前使用 KAV 的模式

  1. requests
    (id, timestamp, uri)
    例如(1, 149382220, '/')

  2. params
    (request_id, key, value)
    例如(1, 'action', 'test'), (1, 'foo', 'abc'), (1, 'bar', 'def')

有什么建议?

更新:我们在 AWS RedShift 上运行仓库

data-warehouse database-design eav star-schema redshift

13
推荐指数
2
解决办法
9284
查看次数

用于构建实时分析系统的数据库

我想搭建一个类似Google Analytics的系统(仅供内部使用,流量少,功能少),主要关注

  1. 通过不同维度的用户人口统计信息,例如用户代理、操作系统、国家等,实时统计唯一的 URI 访问/PV

  2. 实时计算平均用户会话长度(如果来自同一IP的两个请求之间的差异小于1分钟)

有没有好的数据库存储可以实时启用这种查询?

ps 我目前正在测试 InfiDB。

mysql postgresql oracle database-design columnstore

7
推荐指数
1
解决办法
2816
查看次数

MySQL 说“InnoDB: Initializing buffer pool, size = 128.0M”,是不是说使用了128MB RAM?

我只是使用了很少的 InnoDB 表(例如小于 1MB),但是在 MySQL 启动期间,它说

InnoDB: Initializing buffer pool, size = 128.0M
Run Code Online (Sandbox Code Playgroud)

是不是说我用这么小的内存,服务器还是128M内存?

mysql innodb linux ubuntu

5
推荐指数
1
解决办法
2万
查看次数

优化 MySQL query_cache_min_res_unit

我的查询缓存设置如下:

mysql> SHOW GLOBAL STATUS LIKE 'Q%';
+-------------------------+----------+
| Variable_name           | Value    |
+-------------------------+----------+
| Qcache_free_blocks      | 2270     |
| Qcache_free_memory      | 6580864  |
| Qcache_hits             | 12802676 |
| Qcache_inserts          | 2094054  |
| Qcache_lowmem_prunes    | 111676   |
| Qcache_not_cached       | 137257   |
| Qcache_queries_in_cache | 7559     |
| Qcache_total_blocks     | 18240    |
| Queries                 | 15571718 |
| Questions               | 15571715 |
+-------------------------+----------+
Run Code Online (Sandbox Code Playgroud)

如您所见,我的 值相当高Qcache_lowmem_prunes,但我仍然有相当多的可用内存(总共 32MB 查询缓存大小中的 6MB)

我想看看是否可以进一步减少Qcache_lowmem_prunes.

我应该使用较低的值query_cache_min_res_unit吗?(现在是 4096)

mysql performance query-cache performance-tuning

2
推荐指数
1
解决办法
4238
查看次数