Publisher:The Malloy Semantic Model Server

build

欢迎来到 Publisher,它是为 Malloy 数据语言提供的开源语义模型服务器。

什么是 Malloy?

Malloy 是一种用于建模数据的开源语言。 Malloy 允许您构建丰富的语义数据模型,定义数据的_含义_、关系_和_上下文

Malloy 提供了一个强大的框架,用于编码数据的业务上下文以及针对数据库运行查询。 随附的 VS Code extension 提供了一个用于开发 Malloy 模型、浏览数据和构建简单仪表板的环境。

什么是 Publisher?

Publisher 接受在 Malloy 中定义的语义模型(这些模型富含业务上下文和含义),并通过服务器接口公开它们。 这使得应用程序、AI agents、工具和用户能够一致且可靠地查询您的数据,从而利用 Malloy 模型中定义的共享、明确的理解。

目标:

Publisher 解决了现代数据和 AI 系统中日益严重的问题:如果数据背后的含义不明确,您就无法信任答案。

无论是仪表板、数据应用程序还是 AI-agent,每个与您的数据交互的应用程序都需要理解“收入”、“活跃用户”或“流失”等术语在您的业务中的实际含义。 如果没有这种共同的理解,答案充其量是不一致的,最坏的情况是非常危险的错误。

Publisher 通过 API 提供以 Malloy 定义的语义模型。 这意味着:

我们认为语义层是现代数据栈中缺失的关键。 Publisher 和 Malloy 提供了一种开源的、以开发者为先的方式来定义、管理和服务该层,从而在所有工具中实现一致的、可解释的和 AI-ready 的数据访问。

现在,您可以像发布代码一样发布定义,而不是将定义锁定在专有的 BI 平台中:进行版本控制、测试并通过清晰的接口提供服务。

架构概览

Publisher 由三个主要组件组成:Publisher Server(API 和后端,现在包括 MCP 支持)、Publisher SDK(UI 组件)和 Publisher App(一个参考数据应用程序实现)。

下图说明了 Publisher 组件的组成以及它可以支持的工具和应用程序。

1. Publisher Server (packages/server/)

2. Publisher SDK (packages/sdk/)

3. Publisher App (packages/app/)

4. MCP-Powered Applications

Publisher Server 及其公开 Malloy 语义模型的 MCP 接口支持一类新的数据驱动应用程序,特别是那些利用 AI 的应用程序。 例如:

Publisher App Demo

构建和运行说明

按照以下步骤构建 Publisher 组件并在本地运行服务器。 此项目使用 bun 作为 JavaScript 运行时和 package manager。

1. 初始化和更新 Git Submodules:

Publisher 存储库使用 Git submodules 来包含示例 Malloy 模型(当前是 malloy-samples 的一个 fork)。 这些样本用于测试和演示 Publisher 的功能。

首先,初始化注册的 submodules:

git submodule init

然后,更新 submodules 以获取其内容:

git submodule update

2. 安装依赖项:

使用 bun 安装所有必要的项目依赖项(包括服务器、SDK 和应用程序的依赖项):

bun install

3. 构建项目:

将所有 packages(服务器、SDK、应用程序)的 TypeScript 代码编译为 JavaScript:

bun run build

4. 启动 Publisher 服务器:

运行编译后的服务器代码。 默认情况下,这将在端口 4000 上启动 REST API 服务器,并在端口 4040 上启动 MCP 服务器。服务器将加载在 submodules 中找到的 Malloy packages。

bun run start

启动后,您通常可以在 http://localhost:4000 访问 Publisher App(如果正在运行),并在 http://localhost:4040/mcp 访问 MCP endpoint。

有关如何在服务器上进行开发的信息,请参阅 packages/app/README.md

5. (可选) 配置 GCP 凭据以用于 BigQuery 示例:

一些包含的 malloy-samples 针对 Google BigQuery 公共数据集运行查询。 要运行这些特定的示例,您需要使用 Google Cloud 进行身份验证:

通过使用 gcloud 登录来更新您的 Application Default Credentials (ADC):

gcloud auth login --update-adc

设置您的默认 GCP 项目(将 {my_project_id} 替换为您的实际项目 ID,但对于公共数据集,任何有效的项目通常都应该有效):

gcloud config set project {my_project_id} --installation

当连接到 BigQuery 时,Publisher 服务器(特别是 Malloy 运行时)将自动使用这些凭据。

服务器配置

Publisher 使用本地文件系统上的配置文件来管理服务器设置和项目特定的详细信息,如数据库连接。

SERVER_ROOT/
├── publisher.config.json    # Lists 'staging' and 'prod' projects
│
├── packages/          # Contains the actual Malloy packages
│  ├── package1/
│  │  └── model.malloy
│  ├── package2/
│  └── ...
│
├── staging/          # Staging environment project
│  ├── publisher.connections.json # Staging DB credentials
│  ├── package1 -> ../packages/package1 # Symbolic link
│  └── package2 -> ../packages/package2 # Symbolic link
│
└── prod/            # Production environment project
  ├── publisher.connections.json # Production DB credentials
  ├── package1 -> ../packages/package1  # Symbolic link
  └── package2 -> ../packages/package2  # Symbolic link

*   **好处:** 这允许您构建包含 Publisher 服务器和所有 Malloy packages 的单个 Docker 镜像。 然后,您可以将 *相同的镜像* 部署到不同的环境(staging、production)。 通过配置您的 staging 和 production jobs 以指向适当的项目(`staging` 或 `prod`),您可以确保为每个环境使用正确的连接凭据,而无需重建镜像或修改核心 package 代码。

升级 Malloy 依赖项

要更新到 @malloydata/* 的新 NPM 版本:

bun run upgrade-malloy 0.0.XXX #XXX is the new version number
bun install # This updates node_modules

注意: 请注意,Publisher 存储库当前指向 malloy-samples 仓库的一个 fork。 该 fork 包含一些小的更改,以将每个 Malloy 示例目录转换为一个 package。 一旦 package 格式确定下来,我们打算将更改合并到主要的 malloy-samples 仓库中。

即将推出

我们正在积极开发 Publisher,并计划推出以下几个令人兴奋的功能:

加入 Malloy 社区

资源

文档:

关于

未提供说明、网站或主题。

资源

Readme

许可证

MIT license

Activity

Custom properties

Stars

40 stars

Watchers

6 watching

Forks

7 forks

Report repository

Releases

未发布任何版本

Packages 0

未发布任何 package

Contributors 9

语言

页脚

GitHub © 2025 GitHub, Inc.

页脚导航

You can’t perform that action at this time.