Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
NoSQLの付き合い方
Search
PharmaX(旧YOJO Technologies)開発チーム
August 24, 2022
Technology
110
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
NoSQLの付き合い方
2022.06.30 LT会 江藤さん発表資料
PharmaX(旧YOJO Technologies)開発チーム
August 24, 2022
More Decks by PharmaX(旧YOJO Technologies)開発チーム
See All by PharmaX(旧YOJO Technologies)開発チーム
LLMアプリケーション評価駆動開発の歩き方
pharma_x_tech
3
850
LLMアプリケーションやAIエージェントの評価の基本
pharma_x_tech
1
660
「動くだけ」で終わらせない ― LLMアプリを継続的に改善・運用するための評価駆動開発
pharma_x_tech
2
64
LangSmithによるAIエージェントの継続的改善のためのオブザーバビリティの向上
pharma_x_tech
1
370
PdMによるLiveバイブコーディング〜プロトタイプ開発実践〜
pharma_x_tech
1
99
2025.10.28_CodexとClaude Codeの比較検討 社内座談会
pharma_x_tech
2
690
LLMのアウトプットの評価と改善 〜DSPyによるプロンプト最適化入門によせて〜
pharma_x_tech
6
1.3k
2025.09.02_AIコーディングを利用した開発自動化を目指しての座談会
pharma_x_tech
5
390
AIコーディングを前提にした開発プロセス再設計〜開発生産性向上に向けた試行錯誤〜
pharma_x_tech
4
480
Other Decks in Technology
See All in Technology
20261017福岡devIO 「AIは"良いダッシュボード"を作れるか?
jtakeda
0
140
Browser Spec: Testing Hotwire with Ruby
takahashim
1
120
Refining Active Record
shugo
0
150
Benchmarking Disaggregated Serving on vLLM + Dynamo with a Real Coding-Agent Workload
nttcom
1
190
Kiro Crewをはじめよう
kizawa2020
1
160
ソフトウェア ファクトリー - 再現性のあるソフトウェアの工場づくり / Software factory
iktakahiro
6
4.9k
M5Stackで作る BLEマウス GPSログの世界
tomokusaba
0
420
DGX Spark でどこまでハッキングができるのか?
kash1064
3
1.3k
分析AIエージェントを育てる、動く環境を育てる
codatum
1
1.1k
アウトプット初心者、半年間のふりかえり
4o1sobblue
0
430
hackers_champloo_2026_tidb
makocchi
0
160
自作バイナリを動かす「入口」8選
puhitaku
2
1.3k
Featured
See All Featured
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.5k
Optimizing for Happiness
mojombo
378
71k
Utilizing Notion as your number one productivity tool
mfonobong
4
620
Done Done
chrislema
187
17k
Google's AI Overviews - The New Search
badams
0
1.6k
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
490
Into the Great Unknown - MozCon
thekraken
41
2.8k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.6k
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
Mind Mapping
helmedeiros
1
400
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.7k
The Language of Interfaces
destraynor
162
27k
Transcript
NoSQLのテーブル設計
ある時期のNoSQL
None
NoSQL is 素晴らしい • 早い + 軽量 ◦ 分散処理 •
シンプル ◦ 巨大なjson = 扱いやすい ◦ 学習コストも低い • 柔軟性が高い ◦ json形式で巨大なデータも突っ込める
今のNoSQL
None
NoSQL is 辛い • 検索が貧弱 ◦ 絞り込みの制約が辛い • トランザクション ◦
保証できないもの ▪ 昔NoSQLでトランザクションを実現する黒魔術があった • 拡張性がありすぎる ◦ 同じテーブルでも 値の形が違ったりする
つまりNoSQLには 特有の向き合い方が必要
今回はテーブル設計(dynamo)のお話
• table ◦ RDBのテーブルに相当する。この中にデータを入れる • parimary key ◦ データを一意に絞るためにキーで partion
key, sort key がある ▪ 後述 • Attribute ◦ primary key 以外のカラムのこと ◦ dynamoはカラムに対して型を指定できる。 • index ◦ GSI, LSI があるが、目的は検索条件を増やすため ◦ 今回はGSIを使っている(以下indexと呼称) 基礎概念
• partion key(pk), sort key(sk)を使ってテーブルを作る ◦ pkは一意なIDでこれで検索をかける ▪ PKを指定したらひもづく Attributeが全て取得できる
◦ skはソートに使うキーで range検索やdescなどができる ▪ skだけで検索を行うことはできない。 • indexでwhere対象を増やす ◦ indexをカラムに当てるとそのカラムで検索がかけられるようになる • 検索上限は取得サイズで決まる ◦ 一度の検索で最大1MG dynamoのクエリ制約
pk
index
クエリパターンから考えるしかない!
サンプル(ユーザーの記事投稿サービス) • ユーザーの一覧情報を取得したい • ユーザーの一覧を登録した順にソートしたい • ユーザーの記事一覧を最新順で取得したい • ユーザーの記事一覧でいいねが多い順に取得したい
キーの設計 概念名 PK SK user user_name register_at post user_name post_at
サンプル(ユーザーの記事投稿サービス) • ユーザーの一覧情報を取得したい ◦ dynamoはデフォルトで全件取得があるからいけそう • ユーザーの一覧を登録した順にソートしたい • ユーザーにひもづく記事一覧を最新順で取得したい •
ユーザーにひもづく記事一覧でいいねが多い順に取得したい
テーブル設計 PK SK Attribute user user_nam e(john) resgiter_at (20210312 )
birth_day (1月2日) profile (こんにち わ) post user_nam e(john) post_at (20221203 ) title (記事1) content (テスト) like_count (12)
サンプル(ユーザーの記事投稿サービス) • ユーザーの一覧情報を取得したい ◦ dynamoはデフォルトで全件取得があるからいけそう • ユーザーの一覧を登録した順にソートしたい ◦ userテーブルでregister_atをsortkeyにしてるからいけそう •
ユーザーにひもづく記事一覧を最新順で取得したい ◦ postテーブルでpost_atをsort keyにしてるからいけそう • ユーザーにひもづく記事一覧でいいねが多い順に取得したい
indexの設計 PK SK Attribute post user_nam e like_count title content
post_at
サンプル(ユーザーの記事投稿サービス) • ユーザーの一覧情報を取得したい ◦ dynamoはデフォルトで全権取得があるからいけそう • ユーザーの一覧を登録した順にソートしたい ◦ userテーブルでregister_atをsortkeyにしてるからいけそう •
ユーザーにひもづく記事一覧を最新順で取得したい ◦ postテーブルでpost_atをsort keyにしてるからいけそう • ユーザーにひもづく記事一覧でいいねが多い順に取得したい ◦ index貼って,user_nameから検索がかけられる ◦ like_countをskにしてるからいけそう
完
最後に
クエリパターンを最初に考えましょう