DynamoDB クエリ
Amazon DynamoDB はNoSQL データソースであり、クエリも標準的なリレーショナルデータベースとは異なるハンドリングが必要です。
Value-Sensitive クエリ
カラムにデータ型の指定がないということは、一つのカラムに異なるデータ型を格納することができるということです。例として、ある行にはEmailAddress という文字列が格納され、他の行は同じくEmailAddress というStringSet が格納されることができます。これらや他のケースでは、本製品 がクエリにおいて値によってどのデータ型を使用すべきかを判断します。
例として、PartNumber が文字列、もしくは数値のどちらでも格納できるItem テーブルがあります。Number値である12345 をPartNumber の部分を取得するには、次のクエリを使います:
SELECT Name, Location, Quantity, PartNumber FROM Items WHERE PartNumber = 12345
他の方法として、PartNumber は文字列 "12345" として格納することもできます。文字列値である12345 をPartNumber の部分を取得するには、次のクエリを使います:
SELECT Name, Location, Quantity, PartNumber FROM Items WHERE PartNumber = '12345'特定の値のデータタイプがどちらとも取れるものでない場合には、自動検出のデータタイプの前に使われます。どちらの場合にも、パラメータはハードコードされた値の代わりに使われていて、パラメータのデータ型がAmazon DynamoDB に渡されるデータ型を決定するのに使われています。
カラムデータ型の検出
データ型検出だけでは値が明確ではない場合には、本製品 は自動検出されたカラムと比較します。Location テーブルにCoordinates というカラムを挿入したい場合には、INSERT は次のようになります:
INSERT INTO Locations (Address, Coordinates) VALUES ('123 Fake Street', '[40.7127, 74.0059]')インプット値だけでは、検出されるデータ型は文字列です。但し、Coordinates カラムは以前に自動検出されており、本製品 は単なるstring ではなくNumberSet を挿入します。
Coordinates カラムがLocations テーブルをスキャンした際に自動検出されていなかった場合には、挿入された値のデータ型が使われます。
この場合にもINSERT がNumberSet であることを解決することができますが、いくらか難解な作業が必要です。
Count
Amazon DynamoDB supports 2 different methods of of using the COUNT aggregate function.To simply return the number of Items in you table, issue the following query:
SELECT COUNT(*) FROM MyTableThe CData ADO.NET Provider for Amazon DynamoDB will read the ItemCount from the DescribeTable Action.This avoids using too many read units to scan the full table.However, DynamoDB updates this value approximately every six hours and recent changes might not be reflected in this value.
Issuing the below example queries will instead scan the full table for count:
SELECT COUNT(*) FROM MyTable WHERE MyInt > 10 SELECT COUNT(MyInt) FROM MyTable