でのSQLサポート NCache

実際の複雑なシナリオでは、アプリケーションは多くの場合、主キーを介して検索するのではなく、特定の属性に基づいてデータをフェッチする必要があります。 SQL を使用してデータをクエリすると、実行時にカスタム ロジックに基づいてデータベースからデータを簡単に取得できます。

NCache は、指定された基準に従ってキャッシュを検索し、必要な結果セットを返すことができる SQL クエリ メカニズムをサポートしています。 NCache ネイティブSQL構造化言語に非常に近いクエリ言語を使用しているため、インデックスに登録されたキャッシュデータを簡単にクエリできます。

 

クエリメソッド

NCache ADO.NETインターフェイスと同様のクエリインターフェイスを使用して、キャッシュからデータを検索または削除するためのさまざまなクエリメソッドをサポートします。 でサポートされている最も重要なクエリメソッドのいくつかを次に示します。 NCache.

  • 実行リーダー データを検索し、キーと値のペアを返すために使用されます。 ExecuteReader メソッドを使用するときに、キーのみを返すか、キーと関連データの両方 (全体またはチャンク) を返すかを指定できます。
  • string query = "SELECT * FROM FQN.Product WHERE ProductID > ?";
    var queryCommand = new QueryCommand(query);
    queryCommand.Parameters.Add("ProductID",50000);
    ICacheReader reader = cache.SearchService.ExecuteReader(queryCommand, false, 0);
    if (reader.FieldCount > 0)
    {
        while (reader.Read())
        {
            string result = reader.GetValue<string>(0);
        }
    }
    String query = "SELECT * FROM FQN.Product WHERE ProductID > ?";
    QueryCommand queryCommand = new QueryCommand(query);
    HashMap<String, Object> parameters = new HashMap<>();
    parameters.put("ProductID", 50000);
    queryCommand.getParameters().putAll(parameters);
    CacheReader cacheReader = cache.getSearchService().executeReader(queryCommand);
    if (cacheReader.getFieldCount() > 0) {
        while (cacheReader.read()) {
            cacheReader.getString(0);
    }
  • 非クエリの実行 SQL ステートメントを使用してエントリを削除する場合に使用されます。 結果として削除された行の数を返します。
  • 実行スカラー 通常、クエリが単一の値を返す必要があるカウントおよび集計操作に使用されます。
 

SQLプロジェクション

NCache SQL クエリに対して投影する列を指定できます。 以下に挙げるのは、以下でサポートされる基本的で最も一般的に使用される投影です。 NCache.

  • *: クエリで使用すると、構成時に定義された指定されたオブジェクトのすべてのインデックス付き属性の値が返されます。
  • $ VALUE $: クエリで使用すると、インデックス付き属性とインデックスなし属性を含むオブジェクト全体のキーが返されます。
  • 集計関数: これらの関数には、SUM()、COUNT()、MIN/MAX() などの関数が含まれます。集計関数は、提供されている他の SQL プロジェクションと任意に組み合わせて使用​​できます。
  • SELECT COUNT(*) FROM FQN.Product WHERE UnitsInStock > ?

参照する オブジェクトのSQL検索

 

SQLその他の演算子

これらの演算子は、データの処理と操作のために SQL データベース全体で使用および再利用されます。 NCache 目的の結果を効率的に取得できるようにするさまざまなSQL演算子をサポートします。 これらの関数は次のとおりです。

  • GROUPBY: 指定された基準に該当するすべてのキーをグループ化して値を返します。
  • 注文者: ソートされた形式で値を返します。
  • 日付時刻: 特定の日付または時刻に関するキャッシュを検索します。
  • string query = "SELECT OrderID FROM FQN.Order WHERE OrderDate = ?";
    var queryCommand = new QueryCommand(query);
    DateTime orderDate = new DateTime(2022, 01, 01);
    queryCommand.Parameters.Add("OrderDate", orderDate);
    ICacheReader reader = cache.SearchService.ExecuteReader(queryCommand);
    if (reader.FieldCount > 0)
    {
        while (reader.Read())
        {
            int orderID = reader.GetValue<int>("OrderID");
            Console.WriteLine($"Order: {orderID} was placed on 1st January, 2022.");
        }
    }
    else
    {
        Console.WriteLine($"No orders were placed on 1st January 2022.");
    }
    
    String query = "SELECT OrderID FROM FQN.Order WHERE OrderDate = ?";
    QueryCommand queryCommand = new QueryCommand(query);
    
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    Date orderDate;
    orderDate = sdf.parse("2022-01-01");
    HashMap<String, Object> parameters = new HashMap<>();
    parameters.put("OrderDate", orderDate);
    queryCommand.getParameters().putAll(parameters);
    
    CacheReader cacheReader = cache.getSearchService().executeReader(queryCommand);
    if (cacheReader.getFieldCount() > 0) {
        while (cacheReader.read()) {
    
            int orderID = cacheReader.getInt(cacheReader.getOrdinal("OrderID"));
            System.out.println("Order: " + orderID + " was placed on 1st January, 2022.");
        }
    } else {
        System.out.println("No orders were placed on 1st January 2022.");
    }
 

クエリのSQL演算子

SQL演算子は、論理演算と比較演算を実行するためのWHERE句の予約キーワードです。 NCache では、カスタム条件に従ってデータをクエリするための次の SQL 演算子のサポートが提供されます。

  • IN: この操作は、提供されたすべての属性をキャッシュで検索するのに役立ちます。 同様に、句で指定された属性以外の属性を検索する NOT IN 演算子があります。
  • SELECT ProductName, UnitsAvailable From FQN.Product WHERE Category IN ('Beverages', 'Confections')
  • お気に入り: この操作では、列内の特定のパターンを検索します。 LIKE 演算子は XNUMX つのワイルドカードをサポートしています。
    • *: 文字列内のXNUMX個以上の文字の代わりに使用します。
    • ? : 文字列内の単一の文字の置換。
    • 同様に、あなたは みたいではなく オペレータ。

次はどうする?

レビュー NCache 特徴
ダウンロード NCache
パーソナライズされたLIVEデモをリクエストする

お問い合わせ(英語)

電話
©著作権 Alachisoft 2002 - . All rights reserved. NCache はダイヤテック株式会社の登録商標です。