如您所见,CUbes 提供了一个 HTTPS OLAP 服务器(slicer 工具)。
有人能解释一下这是如何工作的吗?
作为 OLAP 服务器,您可以向服务器发出 OLAP 查询。该 API 是基于 REST/JSON 的,因此您可以通过 HTTP 从 Javascript、nodejs、Python 或您选择的任何其他语言轻松查询服务器。
服务器可以回答 OLAP 查询。 OLAP 查询基于“事实”和“维度”模型。例如,您可以查询“给定国家和产品的总销售额,按月份逐项列出”。
这是否意味着我必须更新我的架构。并创建所谓的事实表?
OLAP 查询是围绕事实和维度概念构建的。
面向 OLAP 的数据仓库策略通常涉及创建这些 Fact 和 Dimension 表,构建所谓的 Star Schema 或 Snowflake Schema。这些模式为关系数据库上的 OLAP 类型查询提供了更好的性能。数据通常由所谓的ETL 进程(它可以是一个简单的脚本)加载,该进程以适当的形式加载数据。
但是,Python Cubes 框架不会强制您更改架构或创建替代架构。它有一个 SQL 后端,允许您定义模型(根据事实和维度),而无需更改实际的数据库模型。这是模型定义的文档:https://pythonhosted.org/cubes/model.html。
但是,在某些情况下,您可能仍希望为数据挖掘定义架构并使用转换过程来定期加载数据。这取决于您的需求、您拥有的数据量、性能考虑等...
借助 Cubes,您还可以使用其他非 RDBMS 后端(例如 MongoDB),其中一些提供内置聚合功能,像 Cubes 这样的 OLAP 服务器可以利用。
这可以与我的 NodeJS 应用程序一起使用吗?
您可以从 NodeJS 向您的 Cubes Slicer 服务器发出查询。
有什么例子吗?
有一个 Javascript 客户端库来查询多维数据集。你可能想用这个:https://github.com/Stiivi/cubes.js/
我不知道任何使用 NodeJS 的示例。您可以尝试从 Cubes (https://github.com/Stiivi/cubes/tree/master/incubator) 中包含的 AngularJS 应用程序中获得一些灵感。另一个客户端工具是 CubesViewer,在构建模型时可能会对您有用:http://jjmontesl.github.io/cubesviewer/。
因为我只创建了单服务器应用程序。 python会驻留在同一个nodejs服务器上。它将如何开始? ('forever app.js' 是我的默认脚本)
您可以将 Cubes Slicer 服务器作为 Web 应用程序(直接从您的 Web 服务器,即 Apache)运行。例如,对于 Apache,您可以使用 apache-wsgi mod,它允许为 python 应用程序提供服务。
Slicer 还可以在独立进程中作为小型 Web 服务器运行,这在开发过程中非常方便(但我不建议在生产环境中使用)。在这种情况下,它将侦听不同的端口(通常为:http://localhost:5000)。
如果我因为没有 exp 而不能使用 python,那么在 Nodejs 中做它的基础是什么?
您根本不需要使用 Python。您可以配置和使用 Python Cubes 作为 OLAP 服务器,并从 Javascript 代码(即直接从浏览器)运行查询。从客户端的角度来看,它就像一个数据库系统,您可以通过 HTTP 查询并获得 JSON 格式的响应。