文章目錄
使用 C# 存取 ArangoDB
之前筆記 使用 C# 存取 Cassandra 提到想要將 log 存放至 NoSQL 中而正在嘗試某幾套 NoSQL,現在就來看看 ArangoDB 的使用吧
基本環境說明
在 mac 上使用 docker 建立 ArangoDB,接著使用 C# 連線至 ArangoDB 執行基本 CRUD
- macOS Mojave 10.14.2
- Docker Community 18.09.1
- Bogus 25.0.4
- ArangoDB 3.4.2
- ArangoDB.Client 0.7.70
建立 ArangoDB instance
透過 docker 僅建立單一 local ArangoDB db instance,並指定
root
的 password 為pass.123
docker run -e ARANGO_ROOT_PASSWORD=pass.123 -p 8529:8529 -d arangodb
使用方式
透過 http://localhost:8529 可以開啟設定介面
登入 ArangoDB
建立 Database
建立 Collection
安裝 NuGet 套件:
Package Manager
Install-Package ArangoDB.Client
.NET CLI
dotnet add package ArangoDB.Client
實際存取 ArangoDB
Insert
//準備 insert 用假資料 var _user = GetFakeUserData(); ArangoDatabase.ChangeSetting(s => { s.Database = "benchmark";//指定 database s.Url = "http://localhost:8529";// 指定 Arango url s.Credential = new NetworkCredential("root", "pass.123");//指定 credential }); using (var db = ArangoDatabase.CreateWithSetting()) { //將資料寫入 "User" collection 中 db.Collection("User").Insert(_user); }
Select
ArangoDatabase.ChangeSetting(s => { s.Database = "benchmark";//指定 database s.Url = "http://localhost:8529";// 指定 Arango url s.Credential = new NetworkCredential("root", "pass.123");//指定 credential }); using (var db = ArangoDatabase.CreateWithSetting()) { var user = db.Document<User>"document-key"); }
Update
ArangoDatabase.ChangeSetting(s => { s.Database = "benchmark";//指定 database s.Url = "http://localhost:8529";// 指定 Arango url s.Credential = new NetworkCredential("root", "pass.123");//指定 credential }); using (var db = ArangoDatabase.CreateWithSetting()) { //依 document-key 修改 Name 欄位資料內容為 "Yowko" db.UpdateById<User>("document-key", new { Name = "Yowko" }); }
Delete
ArangoDatabase.ChangeSetting(s => { s.Database = "benchmark";//指定 database s.Url = "http://localhost:8529";// 指定 Arango url s.Credential = new NetworkCredential("root", "pass.123");//指定 credential }); using (var db = ArangoDatabase.CreateWithSetting()) { //依 document-key 刪除資料 db.RemoveById<User>("document-key"); }
心得
ArangoDB 與 RavenDB、CouchDB 相同預設就帶有 GUI 管理介面不用另外準備,管理上很便利
可以滿足 Shcema-less 的需求,資料的處理上可以透過 AQL 或是 REST 方式來操作,.NET 使用的套件:ArangoDB.Client 底層也是也是直接使用 Http 來發送 request ,不過在 api 的使用上比起 RavenDB.Client 便利性稍差
參考資訊
文章作者 Yowko Tsai
上次更新 2021-11-03
授權合約
本部落格 (Yowko's Notes) 所有的文章內容(包含圖片),任何轉載行為,必須通知並獲本部落格作者 (Yowko Tsai) 的同意始得轉載,且轉載皆須註明出處與作者。
Yowko's Notes 由 Yowko Tsai 製作,以創用CC 姓名標示-非商業性-相同方式分享 3.0 台灣 授權條款 釋出。