1
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

スクレイピング時におけるDynamoDBテーブル設計

Last updated at Posted at 2017-07-27

#前提
毎日スクレイピングしたデータをDynamoDBに格納しているので、日々一定量のデータが増加している。
主にデータは98%がその日に利用され、1か月以降の利用率は1%未満。
つまり、新しいデータほど利用頻度が高く価値があり古いデータにかかるコストを抑えたい。

Time Based Partition Tablesパターンを利用
(AWS Summit 2014で安川さんが話していたテーブルパターン)

#テーブル名

まずスクレイピデータを蓄積するテーブルを作成します。


2017-07-Article

テーブル名に年月を入れ、スクレイピングしたデータはその月のテーブルに格納します。
テーブルは毎月作成し、古く利用率の低いテーブルはスループットを抑えたり、アーカイブしてS3などに書き出しdrop tableで削除し、費用を抑えることができます。

awsのdynamodbはテーブルをグループでまとめて管理できないので、名前によって整理をつけます。
使用できるプレフィックスは. , _ , -

#Primary key

  • Primary key:
  • Hash key: articleId
  • Range key: timeStamp
articleId timeStamp Title
xxxzzzz 1501165697 xxxx
yyydssd 1501165693 yyyy
zzfafdf 1501165297 zzzz
sasgddd 1501145697 aBBf
gewgggg 1501165657 fdsa
etdgdsd 1501165677 drag

Range keyはNumber型にしておくことで、データ取得時に時刻順にソート可能です。

キー条件式は

a = b - 属性 a が値 b と等しい場合、true
a < b - a が b より小さい場合、true
a <= b - a が b 以下である場合、true
a > b - a が b より大きい場合、true
a >= b - a が b 以上である場合、true
a BETWEEN b AND c - a が b 以上で、c 以下である場合、true。
次の関数もサポートされます。

begins_with (a, substr) - 属性の値 a が特定のサブ文字列から始まる場合、true。

参考
http://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/Query.html#QueryAndScan.Query

1
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?