14E. DynamoDB ๋ฐ์ดํฐ ์ฟผ๋ฆฌํ๊ธฐ
14E. DynamoDB ๋ฐ์ดํฐ ์ฟผ๋ฆฌํ๊ธฐ ๊ด๋ จ
์์ ์ค๊ณํ๋ ๋๋ก ํ ์ด๋ธ๋ ๋ง๋ค๊ณ ๋ฐ์ดํฐ๋ ์ถ๊ฐํ์ต๋๋ค. ์ด์ ์ํ๋ ๋ฐ์ดํฐ๋ฅผ ์ป๋ ์ฟผ๋ฆฌ๋ฅผ ํด๋ณด๊ฒ ์ต๋๋ค. ๋จผ์ ์ฃผ๊ฐ ์ ์ฒด์์๋ฅผ ์ฐ์ถํฉ๋๋ค.
UsersLeaderboard
ํ
์ด๋ธ์์ ์ฃผ๊ฐ ์ ์ฒด ์์๋ฅผ ์ฟผ๋ฆฌํฉ๋๋ค.
- Scan, Query: Scan์ ํ
์ด๋ธ์ ๋ชจ๋ ์์ดํ
์ ์ถ๋ ฅํ๋ ๊ฒ์ด๊ณ , Query๋ ์ง์ ํ ์กฐ๊ฑด์ ๋ง์ ๋ด์ฉ์ ์ถ๋ ฅํ๋ ๊ฒ์
๋๋ค.
[Query]
๋ฅผ ์ ํํฉ๋๋ค. - Index Name: ๊ฒ์ํ ์ธ๋ฑ์ค์
๋๋ค.
[Global] Week-TopScore-Index: Week, TopScore
๋ฅผ ์ ํํฉ๋๋ค. - Hash Key: ๊ฒ์ํ ํด์ ํค์
๋๋ค. ์ธ๋ฑ์ค๋ฅผ ์ ํํ๋ฉด ์๋์ผ๋ก ์ค์ ๋ฉ๋๋ค. ๊ธฐ๋ณธ๊ฐ ๊ทธ๋๋ก ์ฌ์ฉํฉ๋๋ค.
- Week equal to: ์ฃผ ๋จ์๋ก ๊ฒ์ํ ๊ฒ์ด๋ฏ๋ก
2014-05-09,2014-05-15
๋ฅผ ์ ๋ ฅํฉ๋๋ค.
- Week equal to: ์ฃผ ๋จ์๋ก ๊ฒ์ํ ๊ฒ์ด๋ฏ๋ก
- Range Key: ๊ฒ์ํ ๋ฒ์ ํค์
๋๋ค. ์ธ๋ฑ์ค๋ฅผ ์ ํํ๋ฉด ์๋์ผ๋ก ์ค์ ๋ฉ๋๋ค. ๊ธฐ๋ณธ๊ฐ ๊ทธ๋๋ก ์ฌ์ฉํฉ๋๋ค.
- TopScore: ์ต๋์ ์๋ฅผ
99999
๋ผ ๋ณด๊ณ ,99999
๋ฅผ ์ ๋ ฅํฉ๋๋ค. - less than: ๋ฒ์ ํค๋ ๊ฒ์ ์กฐ๊ฑด์ ์ ํ ์ ์์ต๋๋ค. ์ง์ ํ ๊ฐ๋ณด๋ค ์์ ๊ฐ์ ๊ตฌํ๋๋ก
less than
์ ์ ํํฉ๋๋ค.
- TopScore: ์ต๋์ ์๋ฅผ
- Ascending, Descending: ๋์ ์ ์๊ฐ ๋งจ ์์ ์ถ๋ ฅ๋๋๋ก ๋ด๋ฆผ์ฐจ์(Descending)์ผ๋ก ์ค์ ํฉ๋๋ค.
๋ฒ์ ํค(Range Key) ๊ฒ์ ์กฐ๊ฑด
- equal to: ์์ฑ์ ๊ฐ๊ณผ ๊ฐ์ ๋
- less than: ์์ฑ์ ๊ฐ๋ณด๋ค ์์ ๋
- less than or equal to: ์์ฑ์ ๊ฐ๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ๋
- greater than: ์์ฑ์ ๊ฐ๋ณด๋ค ํด ๋
- greater than or equal to: ์์ฑ์ ๊ฐ๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ์ ๋
- between: ์์ฑ์ ๊ฐ์ ํฌํจ ๋ ๋
- begins with: ์์ฑ์ ๊ฐ์ด ~๋ก ์์๋ ๋
์ด๋ฒ์๋ ๋ก์ปฌ ๋ณด์กฐ ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ์ธ ์ต๊ณ ๊ธฐ๋ก์ ์กฐํํด ๋ณด๊ฒ ์ต๋๋ค. UsersLeaderboard
ํ
์ด๋ธ์์ ๊ฐ์ธ ์ต๊ณ ๊ธฐ๋ก์ ์ฟผ๋ฆฌํฉ๋๋ค.
- Scan, Query:
Scan
์ ํ ์ด๋ธ์ ๋ชจ๋ ์์ดํ ์ ์ถ๋ ฅํ๋ ๊ฒ์ด๊ณ ,Query
๋ ์ง์ ํ ์กฐ๊ฑด์ ๋ง์ ๋ด์ฉ์ ์ถ๋ ฅํ๋ ๊ฒ์ ๋๋ค.[Query]
๋ฅผ ์ ํํฉ๋๋ค. - Index Name: ๊ฒ์ํ ์ธ๋ฑ์ค์
๋๋ค.
[Local] TopScore-Index: Id, TopScore
๋ฅผ ์ ํํฉ๋๋ค. - Hash Key: ๊ฒ์ํ ํด์ ํค์
๋๋ค. ์ธ๋ฑ์ค๋ฅผ ์ ํํ๋ฉด ์๋์ผ๋ก ์ค์ ๋ฉ๋๋ค. ๊ธฐ๋ณธ๊ฐ ๊ทธ๋๋ก ์ฌ์ฉํฉ๋๋ค.
- Id equal to: John(1) ์ ์ ์ ์ ์๋ฅผ ์กฐํํ ๊ฒ์ด๋ฏ๋ก 1์ ์ ๋ ฅํฉ๋๋ค.
- Range Key: ๊ฒ์ํ ๋ฒ์ ํค์
๋๋ค. ์ธ๋ฑ์ค๋ฅผ ์ ํํ๋ฉด ์๋์ผ๋ก ์ค์ ๋ฉ๋๋ค. ๊ธฐ๋ณธ๊ฐ ๊ทธ๋๋ก ์ฌ์ฉํฉ๋๋ค.
- TopScore: ์ต๋์ ์๋ฅผ
99999
๋ผ ๋ณด๊ณ ,99999
๋ฅผ ์ ๋ ฅํฉ๋๋ค. - less than: ๋ฒ์ ํค๋ ๊ฒ์ ์กฐ๊ฑด์ ์ ํ ์ ์์ต๋๋ค. ์ง์ ํ ๊ฐ๋ณด๋ค ์์ ๊ฐ์ ๊ตฌํ๋๋ก
less than
์ ์ ํํฉ๋๋ค.
- TopScore: ์ต๋์ ์๋ฅผ
- Ascending, Descending: ๋์ ์ ์๊ฐ ๋งจ ์์ ์ถ๋ ฅ๋๋๋ก ๋ด๋ฆผ์ฐจ์(Descending)์ผ๋ก ์ค์ ํฉ๋๋ค.
- All, Projected: All์ ์ ํํ๋ฉด ์์ดํ ์ ๋ชจ๋ ์์ฑ์ด ์ถ๋ ฅ๋๊ณ , Projected๋ฅผ ์ ํํ๋ฉด ๋ณด์กฐ ์ธ๋ฑ์ค๋ฅผ ์์ฑํ ๋ Projected Attributes์ ์ค์ ํ ์์ฑ๋ค์ด ์ถ๋ ฅ๋ฉ๋๋ค. ๊ธฐ๋ณธ๊ฐ ๊ทธ๋๋ก ์ฌ์ฉํฉ๋๋ค.
AWS ์ฝ์์์๋ ์ฟผ๋ฆฌ ์ถ๋ ฅ ๊ฐ์๋ฅผ ์ค์ ํ ์ ์์ง๋ง ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์์ API๋ก DynamoDB์ ์ฟผ๋ฆฌํ๋ ๊ฒฝ์ฐ ์ถ๋ ฅ ๊ฐ์๋ฅผ ์ค์ ํ ์ ์์ต๋๋ค. ์ฟผ๋ฆฌ ์ถ๋ ฅ ๊ฐ์๋ฅผ 1๊ฐ๋ก ์ค์ ํ๋ฉด ๊ฐ์ธ ์ต๊ณ ๊ธฐ๋ก์ด ๋๋ ๊ฒ์ ๋๋ค.
FriendsLeaderboards
์์ ์ฃผ๊ฐ ์น๊ตฌ ์์๋ฅผ ์ฐ์ถํด๋ณด๊ฒ ์ต๋๋ค.
FriendsLeaderboard
ํ
์ด๋ธ์์ ์ฃผ๊ฐ ์น๊ตฌ ์์๋ฅผ ์ฟผ๋ฆฌํฉ๋๋ค.
- Scan, Query:
Scan
์ ํ ์ด๋ธ์ ๋ชจ๋ ์์ดํ ์ ์ถ๋ ฅํ๋ ๊ฒ์ด๊ณ ,Query
๋ ์ง์ ํ ์กฐ๊ฑด์ ๋ง์ ๋ด์ฉ์ ์ถ๋ ฅํ๋ ๊ฒ์ ๋๋ค.[Query]
๋ฅผ ์ ํํฉ๋๋ค. - Index Name: ๊ฒ์ํ ์ธ๋ฑ์ค์
๋๋ค.
[Global] FriendIdAndWeek-Score-Index: FriendIdAndWeek, Score
๋ฅผ ์ ํํฉ๋๋ค. - Hash Key: ๊ฒ์ํ ํด์ ํค์
๋๋ค. ์ธ๋ฑ์ค๋ฅผ ์ ํํ๋ฉด ์๋์ผ๋ก ์ค์ ๋ฉ๋๋ค. ๊ธฐ๋ณธ๊ฐ ๊ทธ๋๋ก ์ฌ์ฉํฉ๋๋ค.
- FriendIdAndWeek equal to: 3๋ฒ ์ ์ ์
2014-05-09,2014-05-15
์ฃผ๊ฐ์ ์น๊ตฌ ์์๋ฅผ ์ฐ์ถํ ๊ฒ์ด๋ฏ๋ก3,2014-05-09,2014-05-15
๋ฅผ ์ ๋ ฅํฉ๋๋ค.
- FriendIdAndWeek equal to: 3๋ฒ ์ ์ ์
- Range Key: ๊ฒ์ํ ๋ฒ์ ํค์
๋๋ค. ์ธ๋ฑ์ค๋ฅผ ์ ํํ๋ฉด ์๋์ผ๋ก ์ค์ ๋ฉ๋๋ค. ๊ธฐ๋ณธ๊ฐ ๊ทธ๋๋ก ์ฌ์ฉํฉ๋๋ค.
- TopScore: ์ต๋์ ์๋ฅผ
99999
๋ผ ๋ณด๊ณ ,99999
๋ฅผ ์ ๋ ฅํฉ๋๋ค. - less than: ๋ฒ์ ํค๋ ๊ฒ์ ์กฐ๊ฑด์ ์ ํ ์ ์์ต๋๋ค. ์ง์ ํ ๊ฐ๋ณด๋ค ์์ ๊ฐ์ ๊ตฌํ๋๋ก
less than
์ ์ ํํฉ๋๋ค.
- TopScore: ์ต๋์ ์๋ฅผ
- Ascending, Descending: ๋์ ์ ์๊ฐ ๋งจ ์์ ์ถ๋ ฅ๋๋๋ก ๋ด๋ฆผ์ฐจ์(Descending)์ผ๋ก ์ค์ ํฉ๋๋ค.
์ค์ ์ด ์๋ฃ๋์์ผ๋ฉด [Query]
๋ฒํผ์ ํด๋ฆญํฉ๋๋ค. FriendIdAndWeek
๊ฐ 3,2014-05-09,2014-05-15
์ธ ์์ดํ
๋ค์ด TopScore
๊ฐ ๋์ ์์ผ๋ก ์ ๋ ฌ๋์ด ์ถ๋ ฅ๋ฉ๋๋ค.