はじめに
.NET系言語でポータブルNoSQLデータベースを探している場合は、LiteDBがおすすめです。すべての.NETプラットフォームで使用可能であり、C#で書かれており親和性があり、DLLも軽量です。
詳しく説明します。
LiteDB - Embedded NoSQL database for .NET
NoSQLデータベースとは
- リレーショナルデータベースと違い、テーブル定義が不要
- キー項目を確定すれば、データ項目は可変でOK
- DB設計工程の工数削減が期待できます。
NoSQL とは、一般的なリレーショナルデータベースとは異なり、キー項目を検索条件にして値を取得します。
テーブルレイアウトは可変であり、同じテーブル内のレコードであっても、項目を変えることができます。
リレーショナルではテーブル定義を決定しないと、データを格納できません。しかし、NoSQLデータベースでは、キー項目のみ確定しておけば、残りの項目は後から変更可能です。テーブル定義も不要です。
厳密にテーブル定義を決定する必要がないので、DB設計工程を大幅に短縮することができます。開発期間の短縮が見込まれ、アジャイル開発等で積極的に利用されています。
なぜおすすめか
- すべての.NETプラットフォームで使える
- C#で書かれており、親和性がある
- Nugetで簡単インストール、DLLのファイルサイズが450KB以下
- LiteDB.StudioというGUIツールが使える
C#でポータブルなNoSQLデータベースを使う場合、LiteDBをおすすめします。
LiteDB - Embedded NoSQL database for .NET
LiteDBはC#で書かれており、.NETフレームワークの共通言語ランタイムで処理可能な中間コードで実装されています。
.NET 4.5 または .NET Standard 2.0 以上で使用可能です。これにより、Windowsだけでなく、MacやLinux、Xamarinなど、すべての.NETプラットフォームで動作するNoSQLデータベースです。
NuGetから簡単にダウンロードでき、単一のDLLで構成されています。DLLのファイルサイズは450KB以下と軽量です。
以下で説明するLiteDB.STUDIOを使用すると、データベースの内容をGUIで操作することが可能です。
LiteDB.Studio の使い方
LiteDB.Studio はLiteDBv5で使用可能で、NoSQLのデータを表示・編集するためのGUIツールです。
上記のGithubリポジトリから、exeとソースコードを入手可能です。exeも同梱されていますので、コンパイルは不要です。
起動すると、以下のような画面が表示されます。
「Connect」をクリックして、LiteDBファイルを選択します。
テーブルなどのオブジェクト一覧が内容が表示されます。テーブルをクリックするとコマンドが表示されますので、「Run」をクリックして実行すると、テーブル内容が表示されます。
LiteDBパッケージのインストール
Nugetから簡単インストールできます。
名前空間は、LiteDBです。
インサートするコード
以下のデータ項目をクラスとして定義します。
public class customer
{
public int id { get; set; }
public string name { get; set; }
public string[] phones { get; set; }
public bool isActive { get; set; }
public string additional { get; set; }
}
idは、NoSQLデータベースのキー項目です。LiteDBが自動的に採番しますので、ソースコード上は値の設定が不要です。
以下のコードで、LiteDBファイルの作成とテーブルへのインサートを行います。
public static void createLiteDB()
{
using (LiteDatabase litedb = new LiteDatabase(@"C:\jwork\@Programming\CoreConsole\DataBase\lite.db"))
{
var col = litedb.GetCollection<customer>("customers");
customer cus = new customer
{
name = "John Doe123",
phones = new string[] { "000-0000", "111-1111" },
isActive = true,
additional = "additional data"
};
col.Insert(cus);
}
}
以下のコードでLiteDBファイルを読み込みます。存在しなければ、自動的に作成されます。
using (LiteDatabase litedb = new LiteDatabase(@"C:\jwork\@Programming\CoreConsole\DataBase\lite.db"))
コレクションオブジェクトを作成します。
**"customers"**はLiteDBのテーブル名です。
var col = litedb.GetCollection<customer>("customers");
customer
クラスのオブジェクトを作成します。
customer cus = new customer
{
name = "John Doe123",
phones = new string[] { "000-0000", "111-1111" },
isActive = true,
additional = "additional data"
};
最後に、コレクションオブジェクトの Insert
メソッドを使用して、インサートします。
col.Insert(cus);
以下のようにデータが格納されれば、成功です。
データ抽出するコード
public static void queryLiteDB()
{
using(LiteDatabase litedb = new LiteDatabase(@"C:\jwork\@Programming\CoreConsole\DataBase\lite.db"))
{
var col = litedb.GetCollection<customer>("customers");
var result = col.Query()
.Where(x => x.name.StartsWith("J"))
.OrderBy(x => x.name)
.ToList();
foreach(var item in result)
{
Console.WriteLine(item.name);
}
}
}
コレクションオブジェクトのQuery
メソッドでデータを抽出します。
LINQが使えます。
var result = col.Query()
.Where(x => x.name.StartsWith("J"))
.OrderBy(x => x.name)
.ToList();
抽出結果が複数レコードの場合は、foreach
で1つずつ抽出が可能です。
foreach(var item in result)
{
Console.WriteLine(item.name);
}
コメント