Enviar pesquisa
Carregar
第51回NDS PostgreSQLのデータ型 #nds51
•
Transferir como PPTX, PDF
•
0 gostou
•
4,460 visualizações
C
civicpg
Seguir
・PostgreSQL特有のデータ型の紹介 ・プログラムからどのように利用するか
Leia menos
Leia mais
Tecnologia
Denunciar
Compartilhar
Denunciar
Compartilhar
1 de 57
Baixar agora
Recomendados
第52回なんてかんたんなJavaEE
第52回なんてかんたんなJavaEE
civicpg
20120830 DBリファクタリング読書会第三回
20120830 DBリファクタリング読書会第三回
都元ダイスケ Miyamoto
Analytics Environment
Analytics Environment
Yuu Kimy
便利なHerokuと active recordの 速度改善tips
便利なHerokuと active recordの 速度改善tips
豊明 尾古
JavaScriptで出来る、あんなことこんなこと
JavaScriptで出来る、あんなことこんなこと
Mayu Kimura
JJUG CCC 2017 Spring LT about JPA
JJUG CCC 2017 Spring LT about JPA
Naoya Kojima
初心者向けWordPress DB & Performance
初心者向けWordPress DB & Performance
Takayuki Miyauchi
八王子
八王子
Kazutake Hiramatsu
Recomendados
第52回なんてかんたんなJavaEE
第52回なんてかんたんなJavaEE
civicpg
20120830 DBリファクタリング読書会第三回
20120830 DBリファクタリング読書会第三回
都元ダイスケ Miyamoto
Analytics Environment
Analytics Environment
Yuu Kimy
便利なHerokuと active recordの 速度改善tips
便利なHerokuと active recordの 速度改善tips
豊明 尾古
JavaScriptで出来る、あんなことこんなこと
JavaScriptで出来る、あんなことこんなこと
Mayu Kimura
JJUG CCC 2017 Spring LT about JPA
JJUG CCC 2017 Spring LT about JPA
Naoya Kojima
初心者向けWordPress DB & Performance
初心者向けWordPress DB & Performance
Takayuki Miyauchi
八王子
八王子
Kazutake Hiramatsu
シェル芸勉強会へようこそ
シェル芸勉強会へようこそ
Katsuya Tashiro
⑮jQueryをおぼえよう!その1
⑮jQueryをおぼえよう!その1
Nishida Kansuke
Phpのはなし
Phpのはなし
Serverworks Co.,Ltd.
JSONB型でpostgresをNoSQLっぽく使う
JSONB型でpostgresをNoSQLっぽく使う
Yuki Takeichi
⑳CSSでアニメーション!その1
⑳CSSでアニメーション!その1
Nishida Kansuke
Go で Unit Test をやってみた
Go で Unit Test をやってみた
Masahiro Yanou
20151205 中国地方db勉強会 dbm_fs
20151205 中国地方db勉強会 dbm_fs
Takahiro Iwase
ActiveRecord::Enumのススメ
ActiveRecord::Enumのススメ
豊明 尾古
Famo.usはもう試したかい?
Famo.usはもう試したかい?
lion-man
Database smells
Database smells
Mikiya Okuno
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
Mikiya Okuno
20121206 VOYAGE LT - 名前重要って言うけどさ
20121206 VOYAGE LT - 名前重要って言うけどさ
都元ダイスケ Miyamoto
いまいまMySQL@OSC2016長岡
いまいまMySQL@OSC2016長岡
sakaik
いまいまMySQL@OSC2016島根
いまいまMySQL@OSC2016島根
sakaik
今日はMongoDBの話はしない
今日はMongoDBの話はしない
Akihiro Kuwano
Hadoop Streamingを使って お好きな言語でMap☆Reduce!
Hadoop Streamingを使って お好きな言語でMap☆Reduce!
Masaya Taji
altJS勉強会「Haxeすごいからみんな使え!」
altJS勉強会「Haxeすごいからみんな使え!」
政樹 尾野
あなたが知らない リレーショナルモデル
あなたが知らない リレーショナルモデル
Mikiya Okuno
真にスレッドセーフなHash mapとは #渋谷java
真にスレッドセーフなHash mapとは #渋谷java
Hiroyuki Ohnaka
MongoDBの可能性の話
MongoDBの可能性の話
Akihiro Kuwano
第49回emailを安全んにつかうための心がけ
第49回emailを安全んにつかうための心がけ
civicpg
条件式評価器の実装による管理ツールの抽象化
条件式評価器の実装による管理ツールの抽象化
Takuya Ueda
Mais conteúdo relacionado
Mais procurados
シェル芸勉強会へようこそ
シェル芸勉強会へようこそ
Katsuya Tashiro
⑮jQueryをおぼえよう!その1
⑮jQueryをおぼえよう!その1
Nishida Kansuke
Phpのはなし
Phpのはなし
Serverworks Co.,Ltd.
JSONB型でpostgresをNoSQLっぽく使う
JSONB型でpostgresをNoSQLっぽく使う
Yuki Takeichi
⑳CSSでアニメーション!その1
⑳CSSでアニメーション!その1
Nishida Kansuke
Go で Unit Test をやってみた
Go で Unit Test をやってみた
Masahiro Yanou
20151205 中国地方db勉強会 dbm_fs
20151205 中国地方db勉強会 dbm_fs
Takahiro Iwase
ActiveRecord::Enumのススメ
ActiveRecord::Enumのススメ
豊明 尾古
Famo.usはもう試したかい?
Famo.usはもう試したかい?
lion-man
Database smells
Database smells
Mikiya Okuno
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
Mikiya Okuno
20121206 VOYAGE LT - 名前重要って言うけどさ
20121206 VOYAGE LT - 名前重要って言うけどさ
都元ダイスケ Miyamoto
いまいまMySQL@OSC2016長岡
いまいまMySQL@OSC2016長岡
sakaik
いまいまMySQL@OSC2016島根
いまいまMySQL@OSC2016島根
sakaik
今日はMongoDBの話はしない
今日はMongoDBの話はしない
Akihiro Kuwano
Hadoop Streamingを使って お好きな言語でMap☆Reduce!
Hadoop Streamingを使って お好きな言語でMap☆Reduce!
Masaya Taji
altJS勉強会「Haxeすごいからみんな使え!」
altJS勉強会「Haxeすごいからみんな使え!」
政樹 尾野
あなたが知らない リレーショナルモデル
あなたが知らない リレーショナルモデル
Mikiya Okuno
真にスレッドセーフなHash mapとは #渋谷java
真にスレッドセーフなHash mapとは #渋谷java
Hiroyuki Ohnaka
MongoDBの可能性の話
MongoDBの可能性の話
Akihiro Kuwano
Mais procurados
(20)
シェル芸勉強会へようこそ
シェル芸勉強会へようこそ
⑮jQueryをおぼえよう!その1
⑮jQueryをおぼえよう!その1
Phpのはなし
Phpのはなし
JSONB型でpostgresをNoSQLっぽく使う
JSONB型でpostgresをNoSQLっぽく使う
⑳CSSでアニメーション!その1
⑳CSSでアニメーション!その1
Go で Unit Test をやってみた
Go で Unit Test をやってみた
20151205 中国地方db勉強会 dbm_fs
20151205 中国地方db勉強会 dbm_fs
ActiveRecord::Enumのススメ
ActiveRecord::Enumのススメ
Famo.usはもう試したかい?
Famo.usはもう試したかい?
Database smells
Database smells
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
20121206 VOYAGE LT - 名前重要って言うけどさ
20121206 VOYAGE LT - 名前重要って言うけどさ
いまいまMySQL@OSC2016長岡
いまいまMySQL@OSC2016長岡
いまいまMySQL@OSC2016島根
いまいまMySQL@OSC2016島根
今日はMongoDBの話はしない
今日はMongoDBの話はしない
Hadoop Streamingを使って お好きな言語でMap☆Reduce!
Hadoop Streamingを使って お好きな言語でMap☆Reduce!
altJS勉強会「Haxeすごいからみんな使え!」
altJS勉強会「Haxeすごいからみんな使え!」
あなたが知らない リレーショナルモデル
あなたが知らない リレーショナルモデル
真にスレッドセーフなHash mapとは #渋谷java
真にスレッドセーフなHash mapとは #渋谷java
MongoDBの可能性の話
MongoDBの可能性の話
Destaque
第49回emailを安全んにつかうための心がけ
第49回emailを安全んにつかうための心がけ
civicpg
条件式評価器の実装による管理ツールの抽象化
条件式評価器の実装による管理ツールの抽象化
Takuya Ueda
入門系の本を一冊も読まずにデータサイエンスに入門してみる
入門系の本を一冊も読まずにデータサイエンスに入門してみる
Masayuki Sakamoto
Drupal Developer Days Keynote
Drupal Developer Days Keynote
Angela Byron
A guide to using twitter - for researchers
A guide to using twitter - for researchers
Dan Richards-Doran
Design pattern-refactor-functional
Design pattern-refactor-functional
Kfir Bloch
Devel for Drupal 8
Devel for Drupal 8
Luca Lusso
Goをカンストさせる話
Goをカンストさせる話
Moriyoshi Koizumi
HoloLens x Graphics 入門
HoloLens x Graphics 入門
hecomi
フォントの選び方・使い方
フォントの選び方・使い方
k maztani
The Marketer's Guide To Customer Interviews
The Marketer's Guide To Customer Interviews
Good Funnel
The Be-All, End-All List of Small Business Tax Deductions
The Be-All, End-All List of Small Business Tax Deductions
Wagepoint
What am i buying understanding website cost and technology 17 ntc
What am i buying understanding website cost and technology 17 ntc
Ian Mariano
Thank you 3.25.2017
Thank you 3.25.2017
Kevin Schafer
Webセキュリティ入門(xss)
Webセキュリティ入門(xss)
KageShiron
Knit One, Compute One - Software Art Thou?
Knit One, Compute One - Software Art Thou?
Kristine Howard
The Fall of Trump
The Fall of Trump
Susana Gallardo
いまさら聞けないselectあれこれ
いまさら聞けないselectあれこれ
lestrrat
How to go about Setting Goals the Right Way!
How to go about Setting Goals the Right Way!
BizSmart Select
La última reconstrucción del Puente del Ebro en Elciego .- 1874
La última reconstrucción del Puente del Ebro en Elciego .- 1874
Jesús Fernández Ibáñez
Destaque
(20)
第49回emailを安全んにつかうための心がけ
第49回emailを安全んにつかうための心がけ
条件式評価器の実装による管理ツールの抽象化
条件式評価器の実装による管理ツールの抽象化
入門系の本を一冊も読まずにデータサイエンスに入門してみる
入門系の本を一冊も読まずにデータサイエンスに入門してみる
Drupal Developer Days Keynote
Drupal Developer Days Keynote
A guide to using twitter - for researchers
A guide to using twitter - for researchers
Design pattern-refactor-functional
Design pattern-refactor-functional
Devel for Drupal 8
Devel for Drupal 8
Goをカンストさせる話
Goをカンストさせる話
HoloLens x Graphics 入門
HoloLens x Graphics 入門
フォントの選び方・使い方
フォントの選び方・使い方
The Marketer's Guide To Customer Interviews
The Marketer's Guide To Customer Interviews
The Be-All, End-All List of Small Business Tax Deductions
The Be-All, End-All List of Small Business Tax Deductions
What am i buying understanding website cost and technology 17 ntc
What am i buying understanding website cost and technology 17 ntc
Thank you 3.25.2017
Thank you 3.25.2017
Webセキュリティ入門(xss)
Webセキュリティ入門(xss)
Knit One, Compute One - Software Art Thou?
Knit One, Compute One - Software Art Thou?
The Fall of Trump
The Fall of Trump
いまさら聞けないselectあれこれ
いまさら聞けないselectあれこれ
How to go about Setting Goals the Right Way!
How to go about Setting Goals the Right Way!
La última reconstrucción del Puente del Ebro en Elciego .- 1874
La última reconstrucción del Puente del Ebro en Elciego .- 1874
Semelhante a 第51回NDS PostgreSQLのデータ型 #nds51
RDBってなに?
RDBってなに?
Soudai Sone
Couch Db勉強会0623 by yssk22
Couch Db勉強会0623 by yssk22
Yohei Sasaki
EmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤と
Toru Takahashi
EmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤と
Toru Takahashi
Jjugccc2017spring-postgres-ccc_m1
Jjugccc2017spring-postgres-ccc_m1
Kosuke Kida
Node.jsで使えるファイルDB"NeDB"のススメ
Node.jsで使えるファイルDB"NeDB"のススメ
Isamu Suzuki
RDB技術者のためのNoSQLガイド NoSQLの必要性と位置づけ
RDB技術者のためのNoSQLガイド NoSQLの必要性と位置づけ
Recruit Technologies
アナリティクスをPostgreSQLで始めるべき10の理由@第6回 関西DB勉強会
アナリティクスをPostgreSQLで始めるべき10の理由@第6回 関西DB勉強会
Satoshi Nagayasu
Yesod(at FPM2012)
Yesod(at FPM2012)
Seizan Shimazaki
⑯jQueryをおぼえよう!その2
⑯jQueryをおぼえよう!その2
Nishida Kansuke
Sql world を支える技術
Sql world を支える技術
Oda Shinsuke
PHP開発者のためのNoSQL入門
PHP開発者のためのNoSQL入門
じゅん なかざ
MongoDBを用いたソーシャルアプリのログ解析 〜解析基盤構築からフロントUIまで、MongoDBを最大限に活用する〜
MongoDBを用いたソーシャルアプリのログ解析 〜解析基盤構築からフロントUIまで、MongoDBを最大限に活用する〜
Takahiro Inoue
AWSerにも知ってほしいDBの話
AWSerにも知ってほしいDBの話
Kenichiro Mori
.NET最先端技術によるハイパフォーマンスウェブアプリケーション
.NET最先端技術によるハイパフォーマンスウェブアプリケーション
Yoshifumi Kawai
Osc2012.dbに行ってきました
Osc2012.dbに行ってきました
Masaru Kobashigawa
MySQLメインの人がPostgreSQLのベンチマークをしてみた話
MySQLメインの人がPostgreSQLのベンチマークをしてみた話
hiroi10
サーバーレスでアンケートフォームを作ってみた
サーバーレスでアンケートフォームを作ってみた
ryutakatori
【de:code 2020】 PostgreSQL もスケールさせよう! - Hyperscale (Citus) -
【de:code 2020】 PostgreSQL もスケールさせよう! - Hyperscale (Citus) -
日本マイクロソフト株式会社
Chugokudb18_2
Chugokudb18_2
Kosuke Kida
Semelhante a 第51回NDS PostgreSQLのデータ型 #nds51
(20)
RDBってなに?
RDBってなに?
Couch Db勉強会0623 by yssk22
Couch Db勉強会0623 by yssk22
EmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤と
Jjugccc2017spring-postgres-ccc_m1
Jjugccc2017spring-postgres-ccc_m1
Node.jsで使えるファイルDB"NeDB"のススメ
Node.jsで使えるファイルDB"NeDB"のススメ
RDB技術者のためのNoSQLガイド NoSQLの必要性と位置づけ
RDB技術者のためのNoSQLガイド NoSQLの必要性と位置づけ
アナリティクスをPostgreSQLで始めるべき10の理由@第6回 関西DB勉強会
アナリティクスをPostgreSQLで始めるべき10の理由@第6回 関西DB勉強会
Yesod(at FPM2012)
Yesod(at FPM2012)
⑯jQueryをおぼえよう!その2
⑯jQueryをおぼえよう!その2
Sql world を支える技術
Sql world を支える技術
PHP開発者のためのNoSQL入門
PHP開発者のためのNoSQL入門
MongoDBを用いたソーシャルアプリのログ解析 〜解析基盤構築からフロントUIまで、MongoDBを最大限に活用する〜
MongoDBを用いたソーシャルアプリのログ解析 〜解析基盤構築からフロントUIまで、MongoDBを最大限に活用する〜
AWSerにも知ってほしいDBの話
AWSerにも知ってほしいDBの話
.NET最先端技術によるハイパフォーマンスウェブアプリケーション
.NET最先端技術によるハイパフォーマンスウェブアプリケーション
Osc2012.dbに行ってきました
Osc2012.dbに行ってきました
MySQLメインの人がPostgreSQLのベンチマークをしてみた話
MySQLメインの人がPostgreSQLのベンチマークをしてみた話
サーバーレスでアンケートフォームを作ってみた
サーバーレスでアンケートフォームを作ってみた
【de:code 2020】 PostgreSQL もスケールさせよう! - Hyperscale (Citus) -
【de:code 2020】 PostgreSQL もスケールさせよう! - Hyperscale (Citus) -
Chugokudb18_2
Chugokudb18_2
Mais de civicpg
オンライン英会話のモチベーション維持!
オンライン英会話のモチベーション維持!
civicpg
#nds54 ルーチンワーク自動化の話
#nds54 ルーチンワーク自動化の話
civicpg
#nds53 IoTプラットフォーム・工作でスーヴィード(低温調理)
#nds53 IoTプラットフォーム・工作でスーヴィード(低温調理)
civicpg
jupyterの紹介 #nds48
jupyterの紹介 #nds48
civicpg
#nds47 WebのテストをPythonでやってエビデンス取得作業から開放?
#nds47 WebのテストをPythonでやってエビデンス取得作業から開放?
civicpg
私の好きなPython構文 vol.2 #nds46
私の好きなPython構文 vol.2 #nds46
civicpg
Amazon SESのメール受信対応でサーバー減らせた話 #nds44
Amazon SESのメール受信対応でサーバー減らせた話 #nds44
civicpg
Mais de civicpg
(7)
オンライン英会話のモチベーション維持!
オンライン英会話のモチベーション維持!
#nds54 ルーチンワーク自動化の話
#nds54 ルーチンワーク自動化の話
#nds53 IoTプラットフォーム・工作でスーヴィード(低温調理)
#nds53 IoTプラットフォーム・工作でスーヴィード(低温調理)
jupyterの紹介 #nds48
jupyterの紹介 #nds48
#nds47 WebのテストをPythonでやってエビデンス取得作業から開放?
#nds47 WebのテストをPythonでやってエビデンス取得作業から開放?
私の好きなPython構文 vol.2 #nds46
私の好きなPython構文 vol.2 #nds46
Amazon SESのメール受信対応でサーバー減らせた話 #nds44
Amazon SESのメール受信対応でサーバー減らせた話 #nds44
Último
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
Toru Tamaki
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
CRI Japan, Inc.
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
CRI Japan, Inc.
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
Toru Tamaki
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
sn679259
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
WSO2
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
atsushi061452
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NTT DATA Technology & Innovation
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Hiroshi Tomioka
Último
(12)
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
第51回NDS PostgreSQLのデータ型 #nds51
1.
PostgreSQLのデータ型 #nds51 @civic
2.
自己紹介 • NDS管理人 @civic •
最近は低温調理にハマっています
3.
40歳超えたら 自己紹介は30秒以下にしろ!
4.
今日話す内容 • PostgreSQL特有のデータ型の紹介 • プログラムからどのように利用するか そういえば聞いたことがある・・・ 「自分の知らない分野の話をすると非常に学びになる」 という
5.
経緯 • 数値・文字列・日付ぐらいしか使ってないぞ • ざっとドキュメントを眺めていた •
使ったことのないデータ型がたくさんあるぞ • 特にPostgreSQLはデータ型が多い • もっとデータベースの機能を使ったほうが良いのでは ? • 日付を8桁の文字で保持→DATE型 • ???→PostgreSQLが用意するデータ型
6.
質問 • みなさんがメインで使っているRDBMS製品は? • postgresql •
mysql • sqlserver • oracle
7.
各種RDBMSが対応する データ型を比較
8.
データ型の対応を調べてみた postgresql mysql sqlserver
oracle 数値 文字列 日付 論理値 幾何データ XML JSON バイナリ ....
9.
思ったほど 大差なかった・・・
10.
思ったより大差なかった・・・ • PostgreSQLにしかないと思っていた型 • 最近のバージョンではサポートしている •
例:JSON • postgresql 9.2 • mysql 5.7 • sqlserver 2016
11.
PostgreSQL特有 ってほどでもないけど 面白そうなデータ型の紹介
12.
PostgreSQL データ型 #nds51 @civic 特有ってほどでもないけど面白そうな
13.
json / jsonb型
14.
JSON(JavaScript Object Notation) { "foo":
123, "bar": "Hello World", "hoge": [1, 2, 3] } JSONデータ
15.
json型 • postgresql 9.2以降 •
mysql 5.7 • sqlserver 2016 • oracle チェック制約のみ CREATE TABLE mytable( id integer, info json );
16.
jsonb型 • postgresql 9.4以降 •
jsonをバイナリで保持 • 検索効率向上 • 各種関数・演算子のサポート • インデックスサポート CREATE TABLE mytable( id integer, info jsonb );
17.
使いどころ
18.
使いどころ • 入力によって柔軟な構造が必要なケース • アドレス帳の追加属性とか?
19.
JSONが使えるなら 1列でいいじゃん!
20.
なんでもJSONにするのは危険 • 1つの列に複数の意味のデータを入れるべきではない • 制約が使えない・外部キーが使えない •
クエリが複雑になる • 検索や関連に使われないデータのみに使用したい 参考: PostgreSQLのアンチパターン : 何でもかんでもjsonに入れる https://yakst.com/ja/posts/2445
21.
使用例
22.
本の情報 books CREATE TABLE
books( id integer PRIMARY KEY, name text, price integer, info jsonb ); INSERT INTO books VALUES (1, 'book1', 45745, '{"format": "text", "tags": ["english","game","
23.
検索 SELECT * FROM
books WHERE info @> '{"format": "pdf"}'::jsonb; formatがpdfの本を検索 @> 包含演算子 JSONパス・値を保持するか
24.
感想 • textにjson入れるよりはJSON検証も行われる • インデックスや各種関数、演算子が使えて便利 •
id, key, valueだけのテーブル(EAV)よりマシか • 外部キーは絶対マズい • 検索条件に使うのは要件次第か 用法用量を守ろう
25.
範囲型
26.
範囲型 • 数値や日付の範囲を表すデータ型 • postgresql
9.2以降 • mysql • sqlserver • oracle PostgreSQL特有! start end
27.
範囲型 • 数値 • int4range:
4バイト整数範囲 • int8range: 8バイト整数範囲 • numrange: 実数範囲 • 日付 • tsrange: 日付時刻範囲 • tszrange: 日付時刻範囲(タイムゾーンつき) • daterange: 日付範囲
28.
使いどころ
29.
2列で持っていたデータを1列で • from, to,
start, end • 開始よりも終了が大きいという整合性
30.
境界が明確 • 3以上7以下(閉じた境界) • '[3,
7]'::int4range • 3以上7未満(開いた上限) • '[3, 7)'::int4range • 3以上(境界のない上限) • '[3, ]'::int4range 3 7 3 7 3
31.
重なりや含有をチェックする演算子 • 含有 '[10, 20]'::int4range
@> 14 • 重なり '[10, 20]'::int4range && '[15, 30]'::int4range 10 20 14 10 2015 30
32.
インデックスもサポート
33.
使用例
34.
予約テーブル • EXCLUDEの排他制約で予約の重複を防ぐ制約 CREATE TABLE
reservation( during daterange, EXCLUDE USING GIST(during WITH &&) ); INSERT INTO reservation VALUES('[2017-03-10, 2017-03-12]'); INSERT INTO reservation VALUES('[2017-03-11, 2017-03-13]'); --重なりがあるのでエラー ↑duringの重なりの排他
35.
めっちゃ便利!
36.
2つのデータ型を紹介しました
37.
プログラムから どう利用するか?
38.
プログラミング言語から • プログラミング言語からDBを使うときには様々な ライブラリを通している • DBアクセス用API •
ORマッパーなどの便利ライブラリ • 標準APIは各種DBの最小公倍数的な機能 • JDBC APIで提供されるデータ型にJSONはない
39.
Javaの例 PostgreSQL Java Application JDBC Driver for PostgreSQL JDBC API EclipseLinkJPA PostgreSQL特有の機能は ネイティブなところまで
40.
どうやって使うのか • ネイティブ対応しているレイヤーを使用 • JDBC
for PostgreSQL • テキスト経由で受け渡し→SQLで型変換 • PostgreSQL方言 • ライブラリ側の対応次第
41.
具体的に考えてみる • jsonb型をJava /
Pythonから利用 CREATE TABLE json_test( id integer, info jsonb ) id info 1 {"a": 100, "b": "Hello"} 2 {"a": 200, "b": "World"}
42.
Javaの場合 https://github.com/civic/postgresql-java-json
43.
検証ケース • SELECTとINSERTについて考える • 低レベルAPI
→ JDBC API • 高レベルAPI → JPA(永続化標準API)
44.
JDBC API (低レベルAPI) resultSet.getString("info"); //
{"a": 100, "b": "Hello"} SELECT ResultSet#getStringで文字列として取得可能
45.
JDBC API (低レベルAPI) INSERT PGobjectを使用。
※postgresqlドライバの機能 import org.postgresql.util.PGobject; PGobject pgobj =new PGobject(); pgobj.setValue(json_string); //json文字列 pgobj.setType("jsonb"); preparedStatement.setObject(1, pgobj); Java的にはベンダー製パッケージのimportは ちょっと抵抗がある
46.
JDBC API (低レベルAPI) INSERT SQL文内でキャスト PreparedStatement
ps =conn.prepareStatement( "INSERT INTO json_test(info) VALUES(jsonb(?))" ); ps.setString(1, json_string); //json文字列
47.
JPA (高レベルAPI) SELECT /
INSERT Converterを作成すれば SQLデータ型とJavaデータ型を相互変換できる @Entity @Table(name = "json_test") public class JsonTest implements Serializable { // ... 中略 ... @Column(name = "info") @Convert(converter = JsonbConverter.class) private String info;
48.
Pythonの場合 https://github.com/civic/postgresql-python-json
49.
Pythonの例 PostgreSQL Python Application psycopg2DB API SQLAlchemy PostgreSQL特有の機能は ネイティブ対応なところまで libpq
50.
検証ケース • SELECTとINSERTについて考える • 低レベルAPI
→ psycopg2 • 高レベルAPI → SQLAlchemy
51.
psycopg2 (低レベルAPI) cur.execute( "SELECT info
FROM json_test WHERE id=1" ) row = cur.fetchone() print(row[0]) # {'b': 'Hello', 'a': 100} SELECT 何もしなくても、dict(辞書型)として取得できる
52.
psycopg2 (低レベルAPI) INSERT psycopg2.extras.Jsonを使用し、dict→Json from psycopg2.extras
import Json #json objectで更新 cur.execute( "INSERT INTO json_test(info) VALUES(%s)", [ Json({"a":30, "b": "update"}) ] )
53.
psycopg2 (低レベルAPI) INSERT SQL文内でキャスト。 import json #
dictを文字列化してSQLに渡す cur.execute( "INSERT INTO json_test(info) VALUES(jsonb(%s))", [ json.dumps({"a":30, "b": "update"}) //dict→str ] )
54.
SQLAlchemy (高レベルAPI) SELECT /
INSERT SQLAlchemyは至れり尽くせり。 各DBベンダー用方言(dialect)が用意されている。 from sqlalchemy.dialects.postgresql import JSONB class JsonTest(Base): __tablename__ = 'json_test' id = Column(Integer, primary_key=True) info = Column(JSONB) # JSONB型の列と宣言 ...
55.
まとめ
56.
まとめ • PostgreSQL特有のデータ型が便利そう 正規化を失わないように • プログラミング言語からもpg特有の型は使えそう •
Java • 標準APIのままでは使いにくい • ベンダー実装の機能を使うか型変換で • Python • ダックタイピングできるのでJavaほど厳しくない • SQLAlchemy便利
57.
参考 • PostgreSQL 9.6.2文書 •
PGCon2014 JSONB データ型を使ってみよう • Oracle® Database SQL言語リファレンス • MySQL 5.7 Reference Manual • データ型 (Transact-SQL) - MSDN - Microsoft • PostgreSQLのアンチパターン : 何でもかんでもjsonに入れる • JPA 2.1 の 新機能 Converter まとめ • Psycopg - PostgreSQL database adapter for Python
Notas do Editor
例えば日付型を8桁の文字で保持するより、DATE型で保持したほうがよい ・不正な日付データ ・日付用の関数 ・データサイズ 同じように自分がよく知らなかったデータ型もどんどん使えばいいのでは?
ポスグレにはこんなにたくさんのデータ型があるんだよ!って言いたかったんだけど
あらためてタイトルの紹介
PostgreSQLはいち早く対応したが、最近のバージョンではmysql, sqlserverでもjsonが使えるようです。 Oracleは文字列データとして扱うがJSONとして検証するためのCHECK制約だけがあるっぽい。
こっちのほうがいいです 特殊なケースを除いてjson → jsonbでOK
本の情報を保存しよう!
1列に複数の情報は入れるべきではない。原則 柔軟な補足データを格納する場合に検討。 ・EAVパータン ・ジェイウォークパターン
開始<終了という挿入ルールだったり、CHECK制約があったはず。
betweenでやってたこと
getStringでJSON文字列が取得できる
JDBC APIにはJSON型はない。 JDBCの提供するインターフェース経由で使うのが通常。PostgreSQL提供のドライバの機能を使うしかない。 アプリケーションのどこでも書くのではなく、共通ライブラリなど限定された箇所で使うべき。
文字列としてsetStringするので、標準APIのみで可能。
JPAという仕様で、Converterが定義されているのでjsonb型ーStringの変換ができる
Pythonの場合はORマッパー的なライブラリは標準APIになっていない
Javaのときと同じようにPostgreSQL用ドライバが提供する機能でJson型をサポート
Javaのときと同じようにJSON文字列を渡して、SQL文内で型変換する。
カスタムデータタイプの機能が予めDBベンダー別に用意済み。
Baixar agora