YouTrackDB 是一个通用的面向对象图数据库
摘要
JetBrains 已将 YouTrackDB 开源,这是一个通用的面向对象图数据库,具有 O(1) 链接遍历、快照隔离、支持 TinkerPop/Gremlin 以及基于 SQL 的自定义查询语言 YQL 等特性。它已在生产环境中内部使用,并根据 Apache 2.0 许可证提供。
查看缓存全文
缓存时间: 2026/07/14 07:14
JetBrains/youtrackdb 来源:https://github.com/JetBrains/youtrackdb
YouTrackDB 许可证 (https://opensource.org/licenses/Apache-2.0) 官方 JetBrains 项目 (https://confluence.jetbrains.com/display/ALL/JetBrains+on+GitHub) Bluesky (https://bsky.app/profile/youtrackdb.io) Zulip (https://youtrackdb.zulipchat.com/) Medium (https://medium.com/@youtrackdb) Reddit (https://www.reddit.com/r/youtrackdb/)
问题跟踪 (https://youtrack.jetbrains.com/issues/YTDB) | 入门指南
加入我们的 Zulip 社区!
如果您对 YouTrackDB 感兴趣,欢迎加入我们的 Zulip (https://youtrackdb.zulipchat.com/) 社区。告诉我们您正在构建的令人兴奋的应用程序,寻求帮助,或只是与朋友聊天 😃
什么是 YouTrackDB?
YouTrackDB 是一种通用的面向对象图数据库。YouTrackDB 由 JetBrains 支持和开发,并在内部生产环境中使用。
YouTrackDB 的主要特性包括:
- 快速数据处理:链接遍历以 O(1) 复杂度处理,无需昂贵的运行时 JOIN 操作。
- 面向对象 API:该 API 实现了丰富的图和面向对象数据模型。继承和多态的基本概念在数据库层面实现。
- 默认快照隔离:所有事务在快照隔离下运行。每个事务看到的是其启动时刻数据库的稳定快照,从而消除脏读、不可重复读和幻读。
- TinkerPop API 和 Gremlin 查询语言 (https://tinkerpop.apache.org/) 的实现:您可以直接使用 Gremlin 查询语言进行查询,也可以开箱即用地使用 TinkerPop API。对
GQL的支持以及与Gremlin的无缝集成正在开发中 (https://youtrackdb.zulipchat.com/#narrow/channel/511446-dev/topic/GQL.20.20implementation/with/567918479)。为获得最佳查询性能,我们建议使用 YQL 进行初始数据预取。 - YQL(YouTrackDB 查询语言):一种基于 SQL 的查询语言,并扩展了图功能。YQL 使用直观的点表示法进行链接遍历,无需 JOIN,支持强大的 MATCH 语句 进行图模式匹配,并自动使用索引进行查询优化。
- 可扩展的开发工作流:YouTrackDB 支持无模式、混合模式和全模式三种工作模式。
- 强安全性:基于用户、角色和谓词 安全策略 的强大安全分级系统。
- 静态数据加密:可选择加密磁盘上存储的所有数据。
易于安装和使用
YouTrackDB 无需配置和安装即可在任何平台上运行。如果您想尝试 YouTrackDB,请查看我们的 REPL 控制台。
docker run -it youtrackdb/youtrackdb-console
要将 YouTrackDB 作为嵌入式数据库安装,请在 Maven 项目中添加以下依赖:
<dependency>
<groupId>io.youtrackdb</groupId>
<artifactId>youtrackdb-embedded</artifactId>
<version>0.5.0-SNAPSHOT</version>
</dependency>
youtrackdb-embedded 是一个打包了所有第三方依赖(Guava、Jackson、Groovy 等)并移动到 com.jetbrains.youtrackdb.shade 包下的 shaded uber-jar,因此不会与您的应用程序使用的版本冲突。
您还需要将 YTDB 快照仓库添加到 Maven pom.xml 文件中:
<repository>
<id>central-portal-snapshots</id>
<name>Central Portal Snapshots</name>
<url>https://central.sonatype.com/repository/maven-snapshots/</url>
<snapshots>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</snapshots>
</repository>
如果使用 Gradle,则如下所示:
dependencies {
implementation 'io.youtrackdb:youtrackdb-embedded:0.5.0-SNAPSHOT'
}
并且:
repositories {
maven {
url = uri("https://central.sonatype.com/repository/maven-snapshots/")
mavenContent {
snapshotsOnly()
}
}
}
如果您想使用 YouTrackDB 服务器,可以使用 Docker 镜像启动它:
docker run -p 8182:8182 \
-v $(pwd)/secrets:/opt/ytdb-server/secrets \
-v $(pwd)/databases:/opt/ytdb-server/databases \
-v $(pwd)/conf:/opt/ytdb-server/conf \
-v $(pwd)/log:/opt/ytdb-server/log \
youtrackdb/youtrackdb-server
并在 secrets/root_password 文件中提供数据库的 root 密码。
YouTrackDB 至少需要 JDK 21。
要学习如何使用 YouTrackDB,请参阅入门指南。更多关于服务器和嵌入式部署的示例,请查看示例项目。
贡献
YouTrackDB 对所有重要变更都采用结构化开发流程:研究、设计、计划评审、逐项实现和评审。新贡献者可以在开发工作流程手册中学习如何端到端运行,从第 1 章 — 工作流程概览开始。
相似文章
Fluree DB(GitHub 仓库)
Fluree DB 是一个开源的时间图数据库,具有类似 Git 的分支、集成的向量/文本/地理搜索、细粒度的访问控制,并支持 SPARQL、JSON-LD 和 Open Cypher。它针对 AI 代理记忆进行了优化,在十亿级图上实现了高性能。
tursodatabase/turso
Turso Database 是一个用 Rust 编写的进程内 SQL 数据库,兼容 SQLite,具备 MVCC、变更数据捕获、向量支持以及多语言绑定功能。
支持 CRDT 的 Type-Safe 实时协作图数据库
Codemix 开源了 @codemix/graph,这是一款具备 TypeScript 原生模式验证、基于 CRDT 的图数据库,并通过 Yjs 实现实时离线优先同步。
Tracea
Tracea 是一款新产品,为AI代理提供类似Datadog的可观测性,具备追踪、根本原因分析和团队记忆等功能。
Show HN: HelixDB – 基于对象存储的图数据库
HelixDB 是一个用 Rust 构建的图-向量数据库,专为知识图谱和 AI 记忆设计,提供统一平台支持图、向量、键值、文档和关系型数据模型,并配有便于本地和云端部署的工具。