是否有基于MDX(开源)的内存OLAP服务器?

是否有基于MDX(开源)的内存OLAP服务器?,mdx,olap,mondrian,in-memory-database,in-memory,Mdx,Olap,Mondrian,In Memory Database,In Memory,我想知道内存中是否有一个可以处理MDX的OLAP服务器 我找到了那个。 但它没有提到内存中的功能 我所知道的唯一一个是Mondrian,它也是上面wiki文章中提到的两个开源解决方案之一 直到现在我才和蒙德里安一起工作过一段时间。。。我不认为Mondrian是一个真正的内存OLAP服务器。 原因如下: 它有一个内存缓存,其中包含queryresults。但是它们的第一次执行需要很长时间,并且必须从RDBMS加载。() 我认为更好的办法是: 加载缓存中的所有事实和维度表,然后对内存中的数据

我想知道内存中是否有一个可以处理MDX的OLAP服务器

我找到了那个。 但它没有提到内存中的功能

我所知道的唯一一个是Mondrian,它也是上面wiki文章中提到的两个开源解决方案之一

直到现在我才和蒙德里安一起工作过一段时间。。。我不认为Mondrian是一个真正的内存OLAP服务器。
原因如下:
它有一个内存缓存,其中包含queryresults。但是它们的第一次执行需要很长时间,并且必须从RDBMS加载。()
我认为更好的办法是:
加载缓存中的所有事实和维度表,然后对内存中的数据执行每个查询

另外,Oracle今年将在12c企业版中发布内存中有一些(或全部)表的可能性。这将加快OLAP服务器的速度,OLAP服务器只需使用SQL查询RDBMS事实表。
…但是企业版非常昂贵

我想听听关于这方面的其他意见

致以最良好的祝愿,

Dennis。

在ActiveViam,我们开发了Sparkube,这是Apache Spark的一个扩展,它将任何Apache Spark数据集公开为OLAP多维数据集,您可以使用MDX从Excel透视表、Tableau软件或ActiveUI(直接嵌入Sparkube的web前端)中查询。聚合分布在Spark集群中,并在内存中动态执行

Sparkube中的MDX引擎是我们在商用ActiveViam分析平台上开发的,因此许多人都在使用和测试它

例如,以下是如何将CSV文件的内容装载到内存中并将其公开为多维多维多维数据集:

//将文件加载到Spark数据集中。
//这里我们加载一个CSV文件,从
//CSV标题,并使用Spark自动类型推断。
var ds=spark.read
.格式(“csv”)
.选项(“标题”、“正确”)
.选项(“推断模式”、“真”)
.load(“path/to/file.csv”)
//导入sparkube库(sparkube jar必须位于类路径中)
导入com.activeviam.sparkube_
//将数据集公开为多维多维多维数据集。
//您可以立即在开始可视化多维数据集http://localhost:9090/ui
//或使用以下位置的XMLA协议从Excel连接:http://localhost:9090/xmla
新Sparkube().fromDataset(ds)
.withName(“我的第一个立方体”)
.expose()

在ETL完成后,您可以通过运行要保存在内存中的查询来预热Mondrian的缓存。然而,当你在记忆中说。。。显然,事实表不是一个数十亿行的事实,否则就不可能在RAM中存储所有内容。这就是为什么Mondrian甚至不尝试加载所有内容,它应该处理多Tb的多维数据集,试图将所有内容都保存在内存中是毫无意义的。在一定的细节层次上。。。这是一个完全不同的游戏。预热的想法听起来像是一个好的、易于实施的解决方法,谢谢。关于多维数据集大小的一些建议:我认为对于olap系统来说,每月大约5GB的数据,过去3年的数据将是180GB的内存表。多维数据集的数据大部分时间是预先聚合的,就像一天/一个月的客户收入一样。因此,即使DWH是多TB的,数据集市和多维数据集也不必那么大。。。顺便说一句,如果您的多维数据集是多TB大的,您如何加快mondrian的速度?有太多的方法可以提高性能,这本身就是一本书。一些基本想法:1)切换到高性能的面向列的数据库(vertica、infinidb、monetdb等);2) 指数,指数,指数(vertica的预测;infinidb中没有;莫奈的指数);3) 聚合表(mondrian选择具有我们要求的详细程度的最小agg表);4) 缓存,很多,在多个级别(DB缓存、mondrian缓存、查询结果缓存等);5) 数据库的网络路径;6) 更简单的MDX查询,如果查询太大,则将其分解为位。等等,@nsousa提供了很好的建议。我再给你提一个建议:IO瓶颈。在一个项目中,我们使用512GB的RAM作为DWH存储空间。在其他每一个DWH项目中,我都坚持使用SSD磁盘。目前没有MDX接口和非常陈旧的开发工具,但它确实可以工作,而且速度非常快。不仅仅是因为它在内存中,而是因为底层的C引擎处理data.table包中的查询:我希望有一天重新激活这个项目,并最终添加MDX接口支持。您似乎已经链接到自己的项目/应用程序/服务。如果你这样做了,你需要披露这是你自己的。如果你不透露,这通常被认为是垃圾邮件。瞧,哇,好主意!这就像是Spark isnit的司机OLAP?是的,说得很好。Sparkube就像ApacheSpark的OLAP驱动程序;-)它实现MDX查询语言和XMLA协议(多维OLAP的两个标准),并将所有数据处理委托给Spark。