/note/tech

史上最強のデータベース、SurrealDB

SurrealDBというRust製データベースを知ったので紹介します。このデータベースはすごいです。リレーショナル、ドキュメント、グラフ、あらゆる種類のデータ構造を扱うことができ、かつインメモリ、単一ノード、分散環境、全てで動かすことができます。さらにHTTPやWebSocketによるアクセスと柔軟なユーザ認証、認可機能とがDB本体に内包されており、ブラウザから直に接続するWebDBとしても使えます。とにかくなんでもできる夢のデータベースといった感じです。

機能を挙げていたら多くなりすぎたので、特に面白い部分を挙げます。

  • 配列やオブジェクトをネストした複雑なデータ構造を持てるのに、レコードリンクという機能によりリレーションに対応していてしかもSQLやMongoDBより簡潔にクエリが書ける。
  • スキーマレスで各レコードには任意のフィールドを持てるが、必要ならスキーマを定義することもできる。さらに各フィールドの値に式を使って制約を設けることも可能。
  • DB本体にHTTPでの接続機能やユーザ認証・認可機能が含まれており、ブラウザから直接接続するWebDBとしても使える。さらにWebSocketで接続すれば別の接続からのDBの更新を即座に反映できるリアルタイムなDBにもなる。
  • 組み込み関数が豊富でクエリ内でHTTPリクエストを行うことすら可能、かつ自分でJavaScriptを使って関数を定義することも可能であり、バックエンドの機能をDB内に取り込むことができる。
  • 単一ノードはもちろん分散した複数ノードで動かすことも可能。さらにインメモリでも動く。

強すぎないか