最近の開発だと、RDB、KVS、ドキュメントDB。。。
データの形式や構造、使い方によりデータベースを使い分けることも少なくないですよね。
今回はそんな悩みを解決できそうな存在、SurrealDBに出会いましたので、
触ってみた感じをお伝えしたいと思います。
SurrealDBとは
公式によれば
SurrealDBは未来のアプリケーションのための究極なクラウドデータベース
DB起動
docker run --rm -p 8000:8000 surrealdb/surrealdb:latest start --user root --pass root
- すでにコンテナイメージがあるので簡単に起動&スピーディー
-
コンテナ起動以外にも各種OS用のバイナリが用意されている
-
起動後はユーザやDB作成、テーブルの作成が不要で、すぐにデータ登録や検索が行える
クエリ使用例
データ登録&更新
CREATE person:tester SET name = "test" UPDATE person:tester SET address = "home"
データ関連付け
CREATE person:tester SET name = "test", friends = [person:test1, person:test2]
RELATE person:tester->say->greet:hello CONTENT { time = time::now() }
検索
データの検索
SELECT * FROM person WHERE name = "tester" SELECT * FROM person:tester
関連性の検索
SELECT ->belong->attribute.name FROM person
person->belong->attribute.name
SELECT <-belong<-person[where name = 'hoge'].address FROM attribute
まとめ
触ってみて感じたのは、使い出すまでの簡単さと使いやすさ。
個人開発だったり、少人数開発なら現状でも全然使えるなと。
インメモリで起動しておいて、ちょっと退避する場所としてキャッシュ的に
使うとか夢が広がった感じでした。
メリット
・データが本当に柔軟に、かつ直感的に格納できる
・クエリもルールさえわかってしまえば、従来のjoinをsqlに書いたりは必要なく簡易
・起動や処理速度が速い
デメリット
・各言語のライブラリが開発中。まだまだ発展途上で、現状だとjavascriptやRust、
Goくらいしかない
(とはいえ、HTTP通信でクエリは発行できるので問題ないといえばない)
・GUIクライアントがないので、データが全体的に今どうなっているのか?を判別する
手段がない。これが整ってこないと多人数の開発には不向き。
データ構造をまとめる資料を作ったとしてもメンテされないとかで
結局実態が見えてこない状態になることが想像に難くない。
それでは!!!
20代前半までは東京で音楽をやりながら両手の指以上の業種でアルバイト生活をしていましたが、某大手プロバイダのテレアポのバイトでPCの知識の無さに愕然とし、コンピュータをもっと知りたい!と思ったことをきっかけに25歳の時にITの世界に未経験で飛び込みました。
紆余曲折を経て、現在は個人事業主としてお仕事させていただいており、10年ほどになります。
web制作から企業システム構築、ツール開発など、フロントエンドもバックエンドもサーバーもDBAも依頼があれば何でもやってきた雑食系エンジニアです。
今風にいうとフルスタックエンジニアということになるのでしょうか??
→ 詳細プロフィールというか、生い立ちはこちら
→スキルシートをご覧になる場合はこちら
→お仕事のご依頼やお見積りなどお問い合わせはこちらから!