YouTrackDB: JetBrainsのオブジェクト指向グラフデータベース
YouTrackDB: JetBrainsのオブジェクト指向グラフデータベース
YouTrackDBは、JetBrainsによって開発された汎用オブジェクト指向グラフデータベースです。グラフ関係をネイティブに処理するように設計されており、高コストな実行時のJOINを排除し、リンクのトラバーサル(走査)に対してO(1)の計算量を提供するストレージ形式を採用しています。
コア技術機能
YouTrackDBは、グラフ機能とオブジェクト指向の原則を組み合わせることで、高性能なデータ処理と柔軟なスキーマ管理を実現します。
高性能なグラフ・トラバーサル
YouTrackDBにおけるリンクのトラバーサルは、O(1)の計算量で処理されます。グラフ関係のためのネイティブなストレージ形式を使用することで、データベースは従来のSQLのJOIN操作に伴うパフォーマンス・オーバーヘッドを回避します。
オブジェクト指向データモデル
このデータベースは、継承やポリモーフィズム(多態性)といった基本概念をデータベースレベルで処理する、豊かなオブジェクト指向APIを実装しています。これにより、開発者は複雑なオブジェクト階層をストレージ層に直接マッピングできます。
トランザクションの整合性とセキュリティ
- Snapshot Isolation: すべてのトランザクションは、デフォルトでスナップショット分離レベルで実行されます。これにより、各トランザクションは開始時点からのデータベースの安定したスナップショットを参照でき、ダーティリード、非再現リード、ファントムリードを防ぎます。
- Security Profiling: システムは、ユーザー、ロール、および述語セキュリティポリシーに基づくセキュリティ・プロファイリング・メカニズムを使用します。
- Data Encryption: YouTrackDBは、ディスク上に保存されているすべてのデータに対するオプションの暗号化をサポートしています。
クエリ言語とAPI
YouTrackDBは、柔軟性とパフォーマンスのバランスをとるために、データと対話するための複数の方法を提供します。
- Gremlin and TinkerPop: データベースはApache TinkerPop APIを実装しており、Gremlinクエリ言語を標準でサポートしています。
- YQL (YouTrackDB Query Language): 最大限のパフォーマンスを得るために、JetBrainsはYQLを推奨しています。これはグラフ機能の拡張を備えたSQLベースの言語であり、リンクのトラバーサルにはドット記法を使用し、グラフパターンのマッチングには
MATCH文を使用します。
デプロイメントと統合
YouTrackDBは、柔軟なデプロイメントのために、組み込み型(embedded)とサーバー型の両方の構成をサポートしています。
組み込み型統合
開発者は、MavenまたはGradleを使用して、YouTrackDBを組み込み型データベースとして統合できます。youtrackdb-embeddedアーティファクトは、shaded uber-jarであり、サードパーティの依存関係(Guava、Jackson、Groovyなど)をホストアプリケーションとのバージョン競合を避けるためにリロケーション(再配置)しています。
サーバー・デプロイメント
YouTrackDBは、Dockerを使用してネットワークサービスとしてデプロイできます。実行には少なくともJDK 21が必要です。
スキーマの柔軟性
さまざまな開発ワークフローをサポートするために、データベースは3つの異なるモードで動作できます。
- Schema-less: 定義済みのスキーマなし。
- Schema-mixed: 構造化データと非構造化データの組み合わせ。
- Schema-full: 定義されたスキーマへの厳格な準拠。
プロジェクトの起源と背景
コミュニティの議論やコントリビューターの洞察に基づくと、YouTrackDBはOrientDBのフォークであり、com.jetbrains.youtrackdbパッケージ・ネームスペースの下で再設計されています。プロジェクトは、OrientDBの主要なコントリビューターであるAndrii Lomakin氏によってリードされています。
JetBrainsによって開発され、社内での本番環境で使用されている一方で、コミュニティのメンバーは、YouTrackのプロダクション版において、まだ主要なデータベースとして使用されていない(YouTrackは引き続きXodusを使用している)ことに注目しています。さらに、プロジェクトはKotlinではなくJavaで記述されており、開発においてClaude Codeを大幅に活用しています(コードレビューなどのタスクのために25個のエージェント定義を使用しています)。
コミュニティの視点
ユーザーや観察者は、データベースのポジショニングについて、いくつかの点を指摘しています。
"Isnt youtrackdb a odd name, if its intended as a general use db? Why link it that much to a specific known product?"
他のコントリビューターは、他のグラフ・ソリューションと比較しており、オブジェクト指向グラフモデルのTypeDBや、RedisベースのアプローチのFalkorDBについて言及しています。