Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
このRDBについて私は驚くべき闇を見つけたがそこを発表するにはネットは怖すぎる
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
soudai sone
PRO
July 03, 2016
Technology
31k
44
Share
このRDBについて私は驚くべき闇を見つけたがそこを発表するにはネットは怖すぎる
YAP(achimon)C::Asia Hachioji 2016midの資料です。
soudai sone
PRO
July 03, 2016
More Decks by soudai sone
See All by soudai sone
制約を設計する - 非決定性との境界線 / Designing constraints
soudai
PRO
6
2.5k
APMの世界から見るOpenTelemetryのTraceの世界 / OpenTelemetry in the Java
soudai
PRO
0
360
失敗できる意思決定とソフトウェアとの正しい歩き方_-_変化と向き合う選択肢/ Designing for Reversible Decisions
soudai
PRO
11
3.4k
外部キー制約の知っておいて欲しいこと - RDBMSを正しく使うために必要なこと / FOREIGN KEY Night
soudai
PRO
15
6.4k
手を動かしながら学ぶデータモデリング - 論理設計から物理設計まで / Data modeling
soudai
PRO
42
10k
これからアウトプットする人たちへ - アウトプットを支える技術 / that support output
soudai
PRO
21
8.5k
コミュニティと計画的偶発性理論 - 出会いが人生を変える / Life-Changing Encounters
soudai
PRO
8
4.1k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
64
53k
変化に強いテーブル設計の勘所 / Table design that is resistant to changes
soudai
PRO
68
21k
Other Decks in Technology
See All in Technology
今年60歳のおっさんCBになる
kentapapa
1
370
デシリアライゼーションを理解する / Inside Deserialization
tomzoh
0
260
Data Hubグループ 紹介資料
sansan33
PRO
0
2.9k
Hooks, Filters & Now Context: Why MCPs Are the “Hooks” of the AI Era
miriamschwab
0
140
AI時代に新卒採用、はじめました/junior-engineer-never-die
dmnlk
0
250
New CBs New Challenges
ysuzuki
1
170
新規サービス開発におけるReact Nativeのリアル〜技術選定の裏側と実践的OSS活用〜
grandbig
2
180
非エンジニア職からZOZOへ 〜登壇がキャリアに与えた影響〜
penpeen
0
270
Eight Engineering Unit 紹介資料
sansan33
PRO
3
7.2k
サイバーフィジカル社会とは何か / What Is a Cyber-Physical Society?
ks91
PRO
0
160
Introduction to Sansan, inc / Sansan Global Development Center, Inc.
sansan33
PRO
0
3k
生成AI時代のエンジニア育成 変わる時代と変わらないコト
starfish719
0
620
Featured
See All Featured
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
350
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
180
Writing Fast Ruby
sferik
630
63k
The Invisible Side of Design
smashingmag
302
51k
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
130
Heart Work Chapter 1 - Part 1
lfama
PRO
5
35k
Fireside Chat
paigeccino
42
3.9k
Believing is Seeing
oripsolob
1
110
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
1
2.5k
Done Done
chrislema
186
16k
Evolving SEO for Evolving Search Engines
ryanjones
0
180
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.4k
Transcript
͜ͷRDBʹ͍ͭͯ ࢲڻ͖͘ҋΛݟ͚͕ͭͨ ͦ͜Λൃද͢Δʹωοτා͗͢Δ :"1$"TJB)BDIJPKJ
What is it? σʔλϕʔεͷण໋ ΞϓϦέʔγϣϯΑΓ͍
What is it? ͭ·Γɾɾɾ
What is it? ҋଟ͍
What is it? ͦΜͳࢲͷ ۪ஒ ܦݧஊΛ͓͠·͢
͋͐͡Μͩ ̍ɹࣗݾհ ̎ɹMySQL ̏ɹPostgreSQL ̐ɹΞϯνύλʔϯ ̑ɹ·ͱΊ
͋͐͡Μͩ ̍ɹࣗݾհ ̎ɹMySQL ̏ɹPostgreSQL ̐ɹΞϯνύλʔϯ ̑ɹ·ͱΊ
ࣗݾհ ໊લɿીࠜɹେʢͦͶɹ͚ͨͱʣ ྸɿ31ࡀʢࡾਓͷࢠڙ͕͍·͢ʣ ৬ۀɿגࣜձࣾɹΦϛΧϨʢCTOʣ ॴଐɿຊPostgreSQLϢʔβձ ɹɹɹதࠃࢧ෦ ࢧ෦ ɹɹٕज़తʹLLܥݴޠͱ͔RDB͕͖Ͱ͢
ࣗݾհ ໊લɿીࠜɹେʢͦͶɹ͚ͨͱʣ ྸɿ31ࡀʢࡾਓͷࢠڙ͕͍·͢ʣ ৬ۀɿגࣜձࣾɹΦϛΧϨʢCTOʣ ॴଐɿຊPostgreSQLϢʔβձ ɹɹɹதࠃࢧ෦ ࢧ෦ ɹɹٕज़తʹLLܥݴޠͱ͔RDB͕͖Ͱ͢
What is it? d
ࣗݾհ ໊લɿીࠜɹେʢͦͶɹ͚ͨͱʣ ྸɿ31ࡀʢࡾਓͷࢠڙ͕͍·͢ʣ ৬ۀɿגࣜձࣾɹΦϛΧϨʢCTOʣ ॴଐɿຊPostgreSQLϢʔβձ ɹɹɹதࠃࢧ෦ ࢧ෦ ɹɹٕज़తʹLLܥݴޠͱ͔RDB͕͖Ͱ͢
͋͐͡Μͩ ̍ɹࣗݾհ ̎ɹMySQL ̏ɹPostgreSQL ̐ɹΞϯνύλʔϯ ̑ɹ·ͱΊ
MySQL ͦʔౖ͍ܹͩͨ͠ɻ
MySQL ͦʔ͍ͩ.Z42-Θ͔Β͵ɺ ͚ΕͲܕʹਓҰ൪හײͰ͋ͬͨ
ܕม -- ςʔϒϧͷߏ `hoge` CREATE TABLE IF NOT EXISTS `hoge`
( `id` int(11) NOT NULL, `val` varchar(255) NOT NULL ); mysql> SELECT * FROM hoge; +----+--------+ | id | val | +----+--------+ | 1 | ONE | | 2 | 2 | | 3 | Three3 | | 4 | 4Four | +----+--------+ 4 rows in set (0,00 sec)
ܕม mysql> SELECT * FROM hoge WHERE val = "0";
Empty set (0,00 sec) mysql> SELECT * FROM hoge WHERE val = 2; +----+-----+ | id | val | +----+-----+ | 2 | 2 | +----+-----+ 1 row in set, 3 warnings (0,00 sec)
ܕม mysql> SELECT * FROM hoge WHERE val = 4;
+----+-------+ | id | val | +----+-------+ | 4 | 4Four | +----+-------+ 1 row in set, 3 warnings (0,00 sec) mysql> SELECT * FROM hoge WHERE val = 3; Empty set, 3 warnings (0,00 sec)
ܕม -- ςʔϒϧͷߏ `hoge` CREATE TABLE IF NOT EXISTS `hoge`
( `id` int(11) NOT NULL, `val` varchar(255) NOT NULL ); mysql> SELECT * FROM hoge; +----+--------+ | id | val | +----+--------+ | 1 | ONE | | 2 | 2 | | 3 | Three3 | | 4 | 4Four | +----+--------+ 4 rows in set (0,00 sec)
ܕม mysql> SELECT * FROM hoge WHERE val = 4;
+----+-------+ | id | val | +----+-------+ | 4 | 4Four | +----+-------+ 1 row in set, 3 warnings (0,00 sec) mysql> SELECT * FROM hoge WHERE val = 3; Empty set, 3 warnings (0,00 sec) ઌ಄͕ࣈ ඌ͕ࣈ
MySQL 8IZ .Z42-1FPQMFʂʂ
MySQL ࠔͬͨΒ!ZPLV͞Μʹฉ͘
MySQL ԶʮόάͰ͢ΑͶʂʯ
MySQL ԶʮόάͰ͢ΑͶʂʯ ˣ !ZPLV͞Μʮ༷Ͱ͢ʈʈʯ
MySQL WBMͷ߹ɺΛจࣈྻʹΩϟετ͢ΔͷͰͳ͘ɺ WBMΛ%06#-&ʹΩϟετͯ͠ͱൺֱ͍ͯ͠·͢ɻ ӳࣈͰ࢝·Δ453*/(%06#-&ʹΩϟετͰ͖ͣʹΩϟετޙͷ͕ʹͳ Γ·͕͢ɺBCDͷΑ͏ͳจࣈྻʮͰ͖Δͱ͜Ζ·ͰΩϟετ͢ΔʯͷͰ ΩϟετޙͷʹͳΓ·͢ɻ ͭ·ΓͰ͢ ͬͯ͜ͱͰɺʮࣈͰ࢝·Βͳ͍WBMʯͷͷ͚͕ͩݕࡧʹҾ͔͔ͬΔΘ͚Ͱ͢ɻ ͦͯ͠ٯʹࣈ͔Β࢝·Βͳ͍จࣈྻ8)&3&WBMʹ֘͢ΔΘ͚Ͱ͢ɻ
MySQL ܕ
MySQL %"5&5*.&ܕ͕4+*4ͩͱ */%&9͕ޮ͔ͳ͍Ṗ
MySQL %"5&5*.&ܕ͕4+*4ͩͱ */%&9͕ޮ͔ͳ͍Ṗ ˣ ·͊65'͑
MySQL .Z42-ҎԼͩͱ%"5&5*.&ܕ ͷσϑΥϧτʹ $633&/5@%"5&5*.&͑ͳ͍
MySQL
MySQL
MySQL ͦΜͳ༷ཁΒͳ͍ͩΖ͆
MySQL
MySQL ͦΜͳ༷ඞཁͩͬͨʜ
MySQL ਏ͍ʢ͔Β͍
MySQL 1PTUHSF42-ͱҧ͏ͱ͜Ζ
MySQL bTPOF`b40/&`
MySQL bTPOF`b40/&` σϑΥϧτͰ۠ผ͠ͳ͍ όΠφϦܕΛࢦఆͨ͠Βग़དྷΔ
MySQL $)&$,੍ͱ*/%&9ͷ߱ॱ
MySQL $)&$,੍ͱ*/%&9ͷ߱ॱ ˣ ͦΜͳͷແ͍
MySQL $)&$,੍ͱ*/%&9ͷ߱ॱ ˣ ͦΜͳͷແ͍ ͰΫΤϦ௨Δ
MySQL ·͊ͦΜͳࡉ͔͍͜ͱྑ͍
MySQL ֆจࣈ
MySQL
MySQL
MySQL ͦͦֆจࣈΓऔΒΕ
MySQL VOJDPEF @DJͳ߹ ʢྫ͑VUG@HFOFSBM@DJͷ߹ʣ
MySQL ֆจࣈΛؚΊͨҎ߱ͷจࣈ͕ શ෦ࣺͯΒΕͯอଘ͞Ε·͢
MySQL ରࡦͱͯ͠ VUGNC@CJOΛ͏
͋͐͡Μͩ ̍ɹࣗݾհ ̎ɹMySQL ̏ɹPostgreSQL ̐ɹΞϯνύλʔϯ ̑ɹ·ͱΊ
PostgreSQL QHBENJO
PostgreSQL
PostgreSQL
PostgreSQL
PostgreSQL
PostgreSQL ͰෆຬͷΛฉ͔ͳ͍
PostgreSQL ΞϯέʔτͱͬͯΈͨ
PostgreSQL
PostgreSQL
PostgreSQL গͩͬͨ
PostgreSQL ࣾͷ ˣ QIQ.Z"ENJOͰ͢Α
PostgreSQL ࣾͷ ˣ ۀதʹ5XJUUFSͷΞϯέʔτʹ ͑ΕΔਓ͕গͰ͢Αɻ
PostgreSQL ਖ਼ͩͬͨ
PostgreSQL ϩέʔϧ
PostgreSQL ϩέʔϧ σϑΥϧτ04ͷϩέʔϧΛར༻͢Δɻ ͦͷͨΊιʔτ͕ఆͱมΘΔ ˠϩέʔϧʹ$Λࢦఆ͢Δඞཁ͕͋Δ
PostgreSQL 04ʹΑͬͯίϚϯυ͕ҧ͏
PostgreSQL 04ʹΑͬͯίϚϯυ͕ҧ͏ ͪΐͬͱͨ͠ύονΛͯΔͱ͖ʹࠔΔ ಛʹ"OTJCMF͕ࠔΔ
PostgreSQL ϚςϏϡʔͷޭࡑ
PostgreSQL ͩͱϩοΫ͕ΩπΠ Ͱͪΐͬͱྑ͘ͳ͚ͬͨͲ
PostgreSQL ϚςϏϡʔͷࠩߋ৽ͳͲͳ͍
PostgreSQL ࣗಈߋ৽ͳ͍
PostgreSQL !ZPLV ʮͦΕී௨ʹςʔϒϧ࡞Ε͍͍͡ΌΜʯ
PostgreSQL ͙͎ਖ਼
PostgreSQL ࠪϩάແ͍
PostgreSQL Ϛϧνϓϩηεͷͤ͘ʹόοΫΤϯ υϓϩηε͕མͪͨΒશ෦མͪΔ
PostgreSQL 44%ͳͷʹ͍
PostgreSQL 'SFF[Fॲཧ 7"$66.ͷࡍʹ 9*%ͷ࠶ઃఆͷͨΊʹ'6--4$"/͕Δ
PostgreSQL ͦͦ9*%͕CJUͳͷ͕ฅ
PostgreSQL ϙετ0SBDMF%#ʢসʣ
͋͐͡Μͩ ̍ɹࣗݾհ ̎ɹMySQL ̏ɹPostgreSQL ̐ɹΞϯνύλʔϯ ̑ɹ·ͱΊ
Ξϯνύλʔϯ %&-&5&@'"-(
Ξϯνύλʔϯ ϑϥά໊ͬͯલ4&-&$5ͨ͠Β ͱ͔/6--͕͍Δ
Ξϯνύλʔϯ ϑϥά໊ͬͯલ4&-&$5ͨ͠Β ͱ͔/6--͕͍Δ ΧϥϜ໊ͱσʔλ͕ണ͍ͯ͠Δ TUBUVTͷJOU͕ϚδοΫφϯόʔԽ
Ξϯνύλʔϯ ඇਖ਼نԽ
Ξϯνύλʔϯ ඇਖ਼نԽ ͱਖ਼نԽτϨʔυΦϑͱ ݴ͏߹͋Δ͕ਖ਼͍͠σʔλΛ࡞Ζ͏
Ξϯνύλʔϯ ඇਖ਼نԽ ͱਖ਼نԽτϨʔυΦϑͱ ݴ͏߹͋Δ͕ਖ਼͍͠σʔλΛ࡞Ζ͏ ϚςϏϡʔͩͬͨΓΩϟογϡͰ ղܾग़དྷΔࣄଟ͍
Ξϯνύλʔϯ ֎෦ΩʔϨεઃܭ
Ξϯνύλʔϯ ֎෦ΩʔϨεઃܭ ਖ਼نԽ֎෦Ωʔ੍ σʔλΛकΔͨΊʹ͋Δʂʂ
Ξϯνύλʔϯ ͓ͦͦલΒ42-ษڧ͠Ζ
Ξϯνύλʔϯ ͋Δಥવ͘ͳΔ
Ξϯνύλʔϯ ͋Δಥવ͘ͳΔ ˣ σʔλྔ͕ϝϞϦʹΒͳ͘ͳΔ
࣮ફͰϋϚΔ᠘ w ूܭର͕େ͖͘ͳͬͯूܭ࣌ʹϝϞϦʹΒͳ͍ ˠ5FNQPSBSZΛ%JTLʹు͘ͷͰॏ͘ͳΔ w */%&9͕ແ͘5"#-&εΩϟϯΛ͍ͯͨ͠ ˠςετ࣌σʔλ͕খ͔ͬͨ͞ͷͰʹؾ͔ͮͳ͔ͬͨ w ϓϩάϥϜ͕ϧʔϓͷ͚ͩΫΤϦΛ͍͛ͯͨ ˠߦ͕૿͑Δͱϧʔϓճ͕૿͑ͯॏ͘ͳΔ
w ߋ৽͕ܹ͘͠*/%&9ͷஅยԽ͕ൃੜͨ͠ ˠ61%"5&%&-&5&ʹΑͬͯ*/%&9͕அยԽͯ͘͠ͳΔ
࣮ફͰϋϚΔ᠘ w ूܭର͕େ͖͘ͳͬͯूܭ࣌ʹϝϞϦʹΒͳ͍ ˠ5FNQPSBSZΛ%JTLʹు͘ͷͰॏ͘ͳΔ w */%&9͕ແ͘5"#-&εΩϟϯΛ͍ͯͨ͠ ˠςετ࣌σʔλ͕খ͔ͬͨ͞ͷͰʹؾ͔ͮͳ͔ͬͨ w ϓϩάϥϜ͕ϧʔϓͷ͚ͩΫΤϦΛ͍͛ͯͨ ˠߦ͕૿͑Δͱϧʔϓճ͕૿͑ͯॏ͘ͳΔ
w ߋ৽͕ܹ͘͠*/%&9ͷஅยԽ͕ൃੜͨ͠ ˠ61%"5&%&-&5&ʹΑͬͯ*/%&9͕அยԽͯ͘͠ͳΔ ࣮ߦܭըΛ ݟΕΔΑ͏ʹͳΖ͏
͋͐͡Μͩ ̍ɹࣗݾհ ̎ɹMySQL ̏ɹPostgreSQL ̐ɹΞϯνύλʔϯ ̑ɹ·ͱΊ
·ͱΊ %#ͷΕͨࠒʹͬͯ͘Δ
·ͱΊ
·ͱΊ 3%#ͷࣝण໋͕͍
·ͱΊ 3%#ͷࣝण໋͕͍ ˣ ֮͑ΕࣄͰ͍ؒʹཱͭ
·ͱΊ 3%#ͷࣝण໋͕͍ ˣ ֮͑ΕࣄͰ͍ؒʹཱͭ ͔ͩΒͦ͜एऀঁੑʹੋඇڵຯΛ࣋ͬͯཉ͍͠
·ͱΊ %#ͷΫϦςΟΧϧ
·ͱΊ σʔλͷࢮαʔϏεͷࢮ
·ͱΊ %#ͷΫϦςΟΧϧ ˣ ͭ·Γղܾ͢Εӳ༤
·ͱΊ ۪ऀܦݧʹֶͿ ݡऀաڈʹֶͿ
·ͱΊ 3%#ྺ࢙͕͍
·ͱΊ 3%#ྺ࢙͕͍ ˣ ৭Μͳܦݧஊ͔ΒֶΔ
·ͱΊ ͬͱΈΜͳࣦഊஊΛڞ༗͠Α͏ʂ
·ͱΊ 3%#͍͍ͧɻ
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ɻ