15)Best method to Count() in ATS
- 質問:
- 回答:
エンティティの数が少なければすべて取得したうえでアプリケーション側で数を確認してください。数が多い場合はカウント用に現在の状態を保持するデータをtableなどに持っておいて、挿入や削除操作時に同時に状態を変更して現在の数を取得してください。
- 解説:
ストレージサービスのtableでは現在Linqのクエリパラメータは一部しかサポートされていません。サポートされているメソッドについてはここを参照ください。
筆者も必要に迫られてエンティティの数をカウントするような処理をtableで実装したことがありますが、パフォーマンスや同時実行制御の処理の検討や実装などが複雑だったためおすすめしません。データ量によりますが、ある程度の規模のアプリケーションでしたら、Linqなど制限がかなりあるため、そもそもtableを使用せずにSQL Azureを使用することをお勧めします。SQL Azureの容量の制限は過去にはかなり厳しかったのですが、最近はだいぶ緩和されてきていて50GB程度まで使用可能ですのでかなりの規模のアプリケーションにまで対応できます。対応できなければ、データベースを分割したうえで、SQL Azureを複数契約することでさらに大規模なアプリケーションに対応できるようになります。
まとめ
今回、いくつかのトピックを上げてみましたが、それ以外にも多彩な内容でやりとりされています。ますます増えてきて追いかけるのが大変なほどです。最近、いくつかのフォーラムに分割されたので、気になるフォーラムのみを追いかけてみるのはいかがでしょうか。
また、USのフォーラムはMSの開発者達も見ているようで、担当部門に連絡するというような書き込みも散見されています。そのため、Azureに対する不満や要望が直接開発部門に伝わる点でも見逃せません。
残念ながら英語が苦手という方は日本のMSDNフォーラムで質問してみることをお勧めします。日本のMVPをはじめとする優秀な開発者達から力を貸してもらえると思います。