
Sterling NoSQL OODBは、.NET 4.0、Silverlight 4/5、およびWindows Phone 7のプロジェクトで使用するために設計された軽量のNoSQLオブジェクトデータベースです。
特徴
- 複雑なオブジェクト(他の単純なオブジェクトや複雑なオブジェクトを含みます。これらにはオブジェクトも含まれる場合があります-など)。 クラスと構造の両方がオブジェクトとして機能できます。
- フィールドとプロパティの両方で動作します。
- 特定のタイプ、プロパティ、またはフィールドの保存を禁止する機能。
- 循環参照の検出機能。
- メモリ内のDBタイプ。
- 信頼できるSilverlightアプリケーションのローカルファイルシステムでの作業のサポート。
- SilverlightおよびWindows Phoneの分離データウェアハウスのサポート。
- 一般的なデスクトップアプリケーションの標準ファイルシステムのサポート。
- テーブル構造は動的に動的に作成されます。
- 簡単な構成:テーブルの種類、キーの種類、およびキーの割り当てに使用するラムダ式を指定します-完全に作業できます。
- 説明で基本インターフェースまたは抽象クラスの構造を指定するときに特定のタイプを保存します。
- 完全な外部キーのサポート-子オブジェクトは別々のテーブルに保存されます。
- JSON、XMLなどよりも小さなオブジェクトをディスク上に生成するバイナリシリアライザー。
- 暗号化のサポート。
- 圧縮のサポート。
- すべてのCRUD操作のサポート:ロード、保存(コレクションに対して非同期)、削除、アライメント、および完全なゼロ化。
- パーティション化および/またはバージョニングのためのアプリケーションごとの複数のデータベースのサポート。
- 次のタイプのネイティブサポート:基本、Nullable、文字列、バイト配列、DateTime、TimeSpan、Guid、列挙(Enum)、10進数、リスト、辞書、配列、WritableBitmap。
- カスタムシリアライザーを記述することによるカスタムタイプ処理のサポート。
- インデックスとキーに対するLinq to Objectsクエリのサポート。
- リクエスト内のオブジェクトの遅延(遅延)ロード。
- 組み込みキャッシュ。
- 組み込みのバックアップとリカバリ。
- 「保存前」、「保存後」、「削除」のイベントにトリガーを添付する機能。
- トリガーを使用してキーを生成する機能。
- トリガーを介して関係を実装する機能。
- DLLの重量は100 kb未満です。
使用例
種データベースを保存する必要があるとします。 次のエンティティについて説明しましょう。
enum FeedingType {
Herbivore,
Carnivore,
Omnivore
}
class Feeding {
public FeedingType Type { get ; set ; }
public TimeSpan DefaultInterval { get ; set ; }
}
class Animal {
public Guid Key { get ; set ; }
public string Name { get ; set ; }
public TimeSpan LifeExpectancy { get ; set ; }
public Feeding Supply { get ; set ; }
}
* This source code was highlighted with Source Code Highlighter .
したがって、Animalタイプのオブジェクトをデータベースに保存します。
次に、データベースの構造を説明する必要があります。
class BiologyDatabaseInstance: BaseDatabaseInstance {
public const string INDEX_ANIMAL_NAME = "idx_animal_name" ;
public override string Name { get { return "BiologyDb" ; } }
protected override List <ITableDefinition> RegisterTables () {
// - .
return new List <ITableDefinition> {
CreateTableDefinition<Animal, Guid > (animal => animal.Key)
.WithIndex<Animal, string , Guid > (INDEX_ANIMAL_NAME, animal => animal.Name)
};
}
}
* This source code was highlighted with Source Code Highlighter .
データベースには、タイプGuidのキーとビューの名前のインデックスを持つテーブルが1つあります。
次に、実際にデータベースをアクティブにする必要があります。
var engine = new SterlingEngine ();
engine.Activate();
var databaseInstance = engine.SterlingDatabase.RegisterDatabase<BiologyDatabaseInstance> (
new FileSystemDriver ( "C:/Temp/Animals/" ));
* This source code was highlighted with Source Code Highlighter .
以上です。 使用できます。 すべての作業は、登録時に当社に提供されたコピーを通じて実行されます。 例:
var catId = databaseInstance.Save ( new Animal {
Key = Guid .NewGuid (),
LifeExpectancy = TimeSpan .FromDays (365 * 15),
Name = "Cat" ,
Supply = new Feeding {
Type = FeedingType.Carnivore,
DefaultInterval = TimeSpan .FromHours (12)
}
});
var cat = databaseInstance.Load<Animal> (catId);
var orderedAnimals = databaseInstance
.Query<Animal, string , Guid > (BiologyDatabaseInstance.INDEX_ANIMAL_NAME)
.OrderBy (x => x.Index)
.Select (x => x.LazyValue.Value);
* This source code was highlighted with Source Code Highlighter .
データベースの操作を終了するには、Dispose()メソッドを呼び出します。