我正在开发一个Web应用程序,用于从多个平台的API(如Google Analytics,Google AdWords,Bing Ads等)提取数据并将其显示在信息仪表板上。需要关于数据库结构化的建议
有两种不同类型的数据,我从API的拉动:
- 度量(即整数,浮点数,空值)
- 表(JSON编码度量的阵列)
对于度量标准,我将每个列存储为varchar(255),对于Tables,我将每列存储为中文文件,因为JSON字符串可能会变得非常长。
目前,我在按类别/平台独立的个人的表存储度量这样:
MetricsAnalytics (Google Analytics)
MetricsAdwords (Google AdWords)
MetricsBingAds (Bing Ads)
Metrics... (More Platforms)
,我存储在一个类似的方式表。不过,我已将Google Analytics表分成不同的类别,因为我最初将表存储为行中的大型变量(如varchar(4000+)),因为我希望获得最佳性能。当我意识到我无法再预测JSON会有多大时,我改变了列类型。因此,数据库表是这样的:
// Note that these are all MEDIUMTEXT columns
TablesCategoryA (Google Analytics)
TablesCategoryB (Google Analytics)
TablesCategoryC (Google Analytics)
TablesCategoryD (Google Analytics)
TablesAdwords (Google AdWords)
TablesBingAds (Bing Ads)
Tables... (More Platforms)
现在,我已经写完了后端代码来填充这些表,我回去和修改我迄今写的。我希望优化我在应用程序中进行的查询次数(每次页面加载时执行177条语句)。
我不知道它是否会有所作为,如果我是对表,现在结合在一起逼到两个数据库表:
Metrics (All varchar(255)'s)
Tables (All mediumtext's)
任何提示和指针将不胜感激!谢谢!
编辑
我觉得应该注意的是,结合的情况下,指标表将有大约50-60列,并可能在未来的增长。表格较小,但未来可能会增长。
MySQL或SQL服务器填充这些表?请下定决心。 – Barranka 2014-08-28 16:02:47
@Barranka我的道歉,并不意味着添加sql-server作为标签。 – user3745117 2014-08-28 16:03:32
如果你正在存储大量的JSON数据,MySQL不太适合。你会更好地使用[PostgreSQL](http://www.postgresql.org/),它有本地支持。目前还不清楚,为什么你选择'LONGTEXT'时选择使用'MEDIUMTEXT'来避免截断问题,并且基本上没有额外开销。 – tadman 2014-08-28 16:07:47