NoSQLデータベースに制約がないということは、完全なデータの柔軟性を意味します。これは、コレクションの開始時に列やデータ型を定義しないことで開発時間を節約できるという事実を考えると、最初は魅力的に聞こえます。ただし、これだけの柔軟性にはコストがかかります。特に、データベースが十分に大きくなり、一部のドキュメントに不正な値や欠落した属性が含まれている場合、クエリから見つけるのが困難になります。これにより、クエリの結果セットが変更され、最終的にビジネス上の意思決定に悪影響を与える可能性があります。
一方、リレーショナルデータベースでは、データベースへのアクセスを開始する前に、テーブルと列を定義する必要があります。このデータは厳密な形式で保存されるため、不正な値や属性の欠落の可能性はなく、正確なクエリ結果を返します。もちろん、厳密なフォーマットルールを確保すると、データの柔軟性がほぼ完全に失われ、新しいデータを追加してクエリを実行する機能が低下します。
データの柔軟性の制約
ただし、NoSQLトリガーを使用することで、両方の長所を活かすことができます。 .NETベースのNoSQLドキュメントデータベースであるNosDBでは、トリガーを使用してデータを検証し、データルールを適用して、データベースがどれほど大きくなってもデータ形式の一貫性を確保できます。トリガーは、データベース操作に対して登録された関数です。これらは、実行されている操作に応答して実行されるため、関数が「トリガー」されます。
使用するには、.NETクラスを作成し、インストールフォルダーにあるNosDBCommonライブラリからAlachisoft.NosDB.Common.Triggers.IDatabaseTriggerを実装するだけです。使用できるメソッドは2つありますが、コレクションに追加する前にデータを検証するだけなので、PreTriggerメソッドのみを使用し、PostTriggerメソッドはそのままにします。コード例は次のとおりです。
このコードは2つのことを保証します。
- 属性が欠落している場合にオブジェクトを拒否するには、「false」を返します。
- JSONドキュメントがない場合は、デフォルト値で更新し、「true」を返してデータを受け入れます。
属性が正確なデータ型であるかどうかを確認し、必要に応じてデータ入力を拒否することもできます。
このトリガーをコレクションに登録するには、NosDBManagementStudioを開きます。クラスタに接続し、データベースからコレクションを選択します。 [コレクション]まで展開し、CLRトリガーを右クリックしてコンテキストメニューを表示します。トリガー登録ウィザードに従います。より良いアイデアについては、次の図を参照してください。
これは、すべての挿入でデータを検証することだけに関心があるためです(上記のコードから示されています)。 )PreInsertTriggerを登録するだけで済みます。以上です!
NosDBはオープンソースであり、100%ネイティブの.NET NoSQLデータベース(Apache 2.0ライセンスの下でリリースされています)です。 NosDBは超高速で直線的にスケーラブルであるため、.NETアプリケーションで極端なトランザクション負荷(XTP)を処理でき、VisualStudioで機能します。
NosDBは、柔軟なJSONスキーマを提供することにより、.NET開発を加速するのにも役立ちます。 JSONを使用すると、変化するデータ要件にすばやく適応できるため、市場投入までの時間を短縮できます。