用于大数据使用跟踪的数据库模式设计

时间:2014-08-06 06:56:55

标签: oracle database-design database-schema

这是我现在面临的设计问题,我有90M的数据记录,我有10K这些记录的用户。我想设计一个模式,这个模式应该允许我跟踪10K用户对这些90M记录的使用情况。

当前表格结构

10k User table
--------------
user_id 
first_name 
lastname..

90M data table: 
---------------
record_id
value1 
value2..

目前的实施: - 我们有下表用于跟踪问题,因为它不可扩展

usage_tracking : 
---------------
record_id
user_id

如果所有用户都使用所有记录,则该表将具有90M * 10K记录。如果我的用户是100K或更多,该怎么办?该表不可扩展。

用例: 该产品销售这些90M记录,用户根据这些记录的使用情况进行计费。我们应该假设所有用户都使用所有记录

当用户从UI条目访问记录时,usage_tracking表就像事务表一样。

请建议可扩展的设计方法来跟踪用户使用哪条记录?

1 个答案:

答案 0 :(得分:1)

所有一万个用户接触所有九千万条记录的可能性有多大?甚至一个用户触摸它们的可能性有多大?我不知道,但你应该。因为没有这些信息,你就没有机会做出体面的设计工作。

您拥有的跟踪表(record_id, user_id)是您可以逃脱的最小值。没有更小的结构可以容纳您想要的信息。

那你有什么顾虑?

访问速度?好吧,建立索引(record_id, user_id)(无论如何这是你的主键)和(user_id, record_id)。这样你就可以触摸表格,除了初始插页。

空间?您可以使用表和索引压缩。两个复合索引都应该很好地压缩。由于您的表似乎是插入的,因此您可以使用Enterprise Edition许可证提供的基本表压缩。 Find out more


所有这些都是通用的,这是您可以在不提供特定用例的情况下获得的全部内容。例如,如果您的客户想知道用户最后一次触摸特定记录的时间是什么时候?那么这就是问题所在。此外,您还有如何实现实际跟踪的问题(在我看来,这是另一个问题)。