Awesome
Technologies
世界の最新技術を、仲間と楽しむ。
エンジニアの新しいソーシャルメディア。
8文字以上、英・数・記号が使えます
登録には 利用規約 に同意する必要があります。
SERVICE

世界の最新技術コミュニティ、
SHIMBAへようこそ!

最新技術が好きなエンジニアの、
ソーシャルメディアプラットフォームです。
ハイレベルなエンジニアが
あなたに注目
あなたの書いた記事は、SHIMBAの最新技術コミュニティによって評価されます。記事が注目を得ることで、あなたの技術・開発中のプロダクトに注目が集まります。
あなたの記事を世界に発信
SHIMBAコミュニティであなたの書いた・評価した記事は世界中へ公開され、企業や個人に注目されます。トレンドな情報を誰よりも早く、世界へ届けましょう。
あなたの活躍を独自の
アルゴリズムで評価
SHIMBAでは、独自のアルゴリズムであなたの技術コミュニティへの貢献度を評価します。 SHIMBAにしか存在しない、最新技術コミュニティで活躍しましょう。
RELATED ARTICLES

おすすめ記事一覧

aaaa
![](https://article-images.shimba.io/01EK7XQSQZSH9T9SG44Z3FF5YP.jpg =900x584)
2020.09.27
aaa
![](https://article-images.shimba.io/01EK7V3WEBGHAQCKT270TXNM2Z.jpg =900x584)
2020.09.27
ああ
ああ
2020.09.27
DynamoDBの結果項目数のScannedCount、Countについて解説
DynamoDBでインデックスまたはクエリーを実行した取得結果(いわゆる検索結果件)について、2つのパラメーターが返却される。 - ScannedCount - Count 初めてDynamoDB触る人は、「検索結果件数が2つあるけど何なの?」「総件数より少ない気がする」と感じるはずなので、解説しておく。 # ScannedCount その名の通り、スキャンした件数である。DynamoDBは一度のクエリー(スキャン)で 1 MB までしかItemを取得できない。 1MB以上のデータがある場合は、NextTokenというカーソルトークン(検索結果の位置のインデックス)と共に、1MBまでのItemを返すようになっている。 Itemを取得する際、どのフィールドを取得指定したのかで、データ量が変わるので一概に1MB=1000件という表現はできない。(不要なデータを取得しオーバーヘッドになっている場合は無論取得できるItem数が減少してくる) ちなみにこのカーソルトークンという仕組みは、お馴染みのElasticSearchでも採用されているので是非慣れておいた方が良い。 # Count 検索結果として返却した件数になる。 例) - Userテーブル(1000件) - 年齢20歳未満のユーザーは200件 - 年齢フィールドにはインデックスは貼られていない - クエリースキャンに20歳未満を指定 ```json { ScannedCount : 1,000, Count : 200 } ``` # Gmailも総件数とっていません、NoSQLで真面目に総件数を取得するのは諦めましょう 総件数をちゃんと取得するのは、DynamoDBでは諦めましょう。 GoogleのGmailなどを見てもちゃんと取得していないですし。(確かに結果の全件数が知りたいなんてユーザーってあまりいないですよね、BIツールじゃありませんし) ![](https://article-images.shimba.io/01ECYQ62FZMR9Z22R4MABD1GTG.png =598x94) どうしても欲しいのなら、ElasticSearchの導入を推奨しますー。
2020.07.11
Amplifyで@connectionに指定したフィールドに対するクエリーを考える
# はじめに まず、@connectionはあくまでもデータをIDでマッピングして取得するだけなので、@connectionに対して細かなフィルターは指定できません。そのため、N対Nの設計に則り設計を行いましょう。 # N対Nの設定方法 例えば、下記のようなシステム管理者を保持するスキーマ構造を考えます。 - ロールは、様々なシステムに対応するためにN個存在 - ロールは、1ユーザーにN個設定が可能 ```js type User { id: ID! name: String! } type Role { id : ID! title: String! } ``` 上記に対し、N対Nの情報を持つマッピングテーブルを作成します。 参考:https://docs.amplify.aws/cli/graphql-transformer/directives#belongs-to ```js type User { id: ID! name: String! roles: [UserRole] @connection(keyName: "byUser", fields: ["id"]) } type UserRole @model(queries: null) @key(name: "byUser", fields: ["userID", "roleID"]) @key(name: "byRole", fields: ["roleID", "userID"]) { id: ID! userID: ID! roleID: ID! user: User! @connection(fields: ["userID"]) role: Role! @connection(fields: ["roleID"]) } type Role { id : ID! title: String! users: [UserRole] @connection(keyName: "byRole", fields: ["id"]) } ``` これで、ロールに属するユーザ一覧、ユーザーに設定されているロール一覧を取得することが可能です。 尚、その範囲の中でフィルターをしたい場合(複雑な探索をしたい)は、ElasticSearchの導入を推奨します。 クエリーフィルターを実行した場合DynamoDBのリードキャパシティユニットを消費してしまいレイテンシーが高くなってしまう可能性が高いので。
2020.07.11
記事一覧へ
Let's Challenge together !!
世界の最新技術コミュニティに参加しませんか?
SIGN UP