我正在处理大数据,我的所有后端逻辑都是用php编写的。因此,为了更快的输出,哪种折叠技术对我的产品是有效的和有益的。
发布于 2017-01-09 22:04:07
当我们谈到大数据时,我会选择一个OLAP数据库。但是让我们更仔细地看看这些技术:
联机分析处理
..。具有尺寸级数据预汇总的基本技术思想。
让我们猜一下,您想要查询一个销售订单表,其中包含每天、每月和年份的数千份订单。您定义的尺寸,如订单日期,销售渠道,船舶到国家和措施,如营业额,没有订单,发货时间。
通常,您将使用OLAP数据库回答以下问题:
..。或更技术性的:
您可以回答所有问题,其中SELECT子句中有聚合,where子句中有维度:
SELECT
SUM(amount) AS Turnover,
AVG(shipping_time) AS avg_shipping_time
FROM sales_orders
WHERE DATEPART(year,order_date) = 2016 AND sales_channel = 'SHOP'随着OLAP系统能够聚合的越多,性能也越好。因此,使用销售订单号或post地址作为维度是一种糟糕的方法。OLAP的想法是消除数据(或行)。这就需要标准化的数据。
最好在关系数据库(数据仓库)中回答以下问题:
记忆里是什么?
内存中的思想是,在RAM中查询数据比在磁盘上查询数据要快。但RAM也很昂贵。
关系数据库中的内存实际上是为OLTP (在线事务处理)系统构建的--用户进行事务和工作的系统--而不是用于分析。
实际上,像SQL Server Analytics Service这样的企业级OLAP系统在聚合数据后也使用内存中的技术(OLAP技术)。你就是看不见。
--
所以OLAP是对的还是.?
我们还要考虑其他一些问题: OLAP数据库与关系数据库不同,有时它太大,无法使用OLAP数据库(f.e )。当你只有一张大桌子的时候)。需要处理OLAP数据库(聚合和准备使用)。大部分时间都是在没有人工作的晚上完成的(好的,如果你想的话,你可以每秒钟做一次:-)
如果您是大数据新手,并且只想在您的应用程序中修复这一点--并且对OLAP一无所知,我建议您:尝试在您的应用程序代码中修复它--除非您希望使用新的术语、语言(如MDX )而不是SQL等来挖掘一个新的世界。
复杂性取决于您选择的OLAP数据库。但是实际上,您可以轻松地在应用程序中开发自己的"OLAP“聚合级别.它可能不像OLAP数据库那么灵活。
您的应用程序中可能的解决方案可能是:
https://stackoverflow.com/questions/34948250
复制相似问题