Submit Search
第51回NDS PostgreSQLのデータ型 #nds51
Download as PPTX, PDF
•
0 likes
•
4,492 views
C
civicpg
・PostgreSQL特有のデータ型の紹介 ・プログラムからどのように利用するか
Technology
Read more
1 of 57
Download now
Download to read offline
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
More Related Content
PPTX
第52回なんてかんたんなJavaEE
civicpg
PDF
20120830 DBリファクタリング読書会第三回
都元ダイスケ Miyamoto
PPTX
Analytics Environment
Yuu Kimy
PDF
便利なHerokuと active recordの 速度改善tips
豊明 尾古
PDF
JavaScriptで出来る、あんなことこんなこと
Mayu Kimura
PDF
JJUG CCC 2017 Spring LT about JPA
Naoya Kojima
PDF
初心者向けWordPress DB & Performance
Takayuki Miyauchi
PDF
八王子
Kazutake Hiramatsu
第52回なんてかんたんなJavaEE
civicpg
20120830 DBリファクタリング読書会第三回
都元ダイスケ Miyamoto
Analytics Environment
Yuu Kimy
便利なHerokuと active recordの 速度改善tips
豊明 尾古
JavaScriptで出来る、あんなことこんなこと
Mayu Kimura
JJUG CCC 2017 Spring LT about JPA
Naoya Kojima
初心者向けWordPress DB & Performance
Takayuki Miyauchi
八王子
Kazutake Hiramatsu
What's hot
(20)
PDF
シェル芸勉強会へようこそ
Katsuya Tashiro
PDF
⑮jQueryをおぼえよう!その1
Nishida Kansuke
PDF
Phpのはなし
Serverworks Co.,Ltd.
PDF
JSONB型でpostgresをNoSQLっぽく使う
Yuki Takeichi
PDF
⑳CSSでアニメーション!その1
Nishida Kansuke
PPTX
Go で Unit Test をやってみた
Masahiro Yanou
PPTX
20151205 中国地方db勉強会 dbm_fs
Takahiro Iwase
PDF
ActiveRecord::Enumのススメ
豊明 尾古
PPTX
Famo.usはもう試したかい?
lion-man
PDF
Database smells
Mikiya Okuno
PDF
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
Mikiya Okuno
PDF
20121206 VOYAGE LT - 名前重要って言うけどさ
都元ダイスケ Miyamoto
PPTX
いまいまMySQL@OSC2016長岡
sakaik
PPTX
いまいまMySQL@OSC2016島根
sakaik
PDF
今日はMongoDBの話はしない
Akihiro Kuwano
PPTX
Hadoop Streamingを使って お好きな言語でMap☆Reduce!
Masaya Taji
PPTX
altJS勉強会「Haxeすごいからみんな使え!」
政樹 尾野
PDF
あなたが知らない リレーショナルモデル
Mikiya Okuno
PDF
真にスレッドセーフなHash mapとは #渋谷java
Hiroyuki Ohnaka
PPTX
MongoDBの可能性の話
Akihiro Kuwano
シェル芸勉強会へようこそ
Katsuya Tashiro
⑮jQueryをおぼえよう!その1
Nishida Kansuke
Phpのはなし
Serverworks Co.,Ltd.
JSONB型でpostgresをNoSQLっぽく使う
Yuki Takeichi
⑳CSSでアニメーション!その1
Nishida Kansuke
Go で Unit Test をやってみた
Masahiro Yanou
20151205 中国地方db勉強会 dbm_fs
Takahiro Iwase
ActiveRecord::Enumのススメ
豊明 尾古
Famo.usはもう試したかい?
lion-man
Database smells
Mikiya Okuno
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
Mikiya Okuno
20121206 VOYAGE LT - 名前重要って言うけどさ
都元ダイスケ Miyamoto
いまいまMySQL@OSC2016長岡
sakaik
いまいまMySQL@OSC2016島根
sakaik
今日はMongoDBの話はしない
Akihiro Kuwano
Hadoop Streamingを使って お好きな言語でMap☆Reduce!
Masaya Taji
altJS勉強会「Haxeすごいからみんな使え!」
政樹 尾野
あなたが知らない リレーショナルモデル
Mikiya Okuno
真にスレッドセーフなHash mapとは #渋谷java
Hiroyuki Ohnaka
MongoDBの可能性の話
Akihiro Kuwano
Ad
Viewers also liked
(20)
PPTX
第49回emailを安全んにつかうための心がけ
civicpg
PDF
条件式評価器の実装による管理ツールの抽象化
Takuya Ueda
PPTX
入門系の本を一冊も読まずにデータサイエンスに入門してみる
Masayuki Sakamoto
PDF
Drupal Developer Days Keynote
Angela Byron
PPTX
A guide to using twitter - for researchers
Dan Richards-Doran
PPTX
Design pattern-refactor-functional
Kfir Bloch
PDF
Devel for Drupal 8
Luca Lusso
PDF
Goをカンストさせる話
Moriyoshi Koizumi
PPTX
HoloLens x Graphics 入門
hecomi
PDF
フォントの選び方・使い方
k maztani
PDF
The Marketer's Guide To Customer Interviews
Good Funnel
PDF
The Be-All, End-All List of Small Business Tax Deductions
Wagepoint
PDF
What am i buying understanding website cost and technology 17 ntc
Ian Mariano
PPTX
Thank you 3.25.2017
Kevin Schafer
PPTX
Webセキュリティ入門(xss)
KageShiron
PDF
Knit One, Compute One - Software Art Thou?
Kristine Howard
PDF
The Fall of Trump
Susana Gallardo
PDF
いまさら聞けないselectあれこれ
lestrrat
PPTX
How to go about Setting Goals the Right Way!
BizSmart Select
DOCX
La última reconstrucción del Puente del Ebro en Elciego .- 1874
Jesús Fernández Ibáñez
第49回emailを安全んにつかうための心がけ
civicpg
条件式評価器の実装による管理ツールの抽象化
Takuya Ueda
入門系の本を一冊も読まずにデータサイエンスに入門してみる
Masayuki Sakamoto
Drupal Developer Days Keynote
Angela Byron
A guide to using twitter - for researchers
Dan Richards-Doran
Design pattern-refactor-functional
Kfir Bloch
Devel for Drupal 8
Luca Lusso
Goをカンストさせる話
Moriyoshi Koizumi
HoloLens x Graphics 入門
hecomi
フォントの選び方・使い方
k maztani
The Marketer's Guide To Customer Interviews
Good Funnel
The Be-All, End-All List of Small Business Tax Deductions
Wagepoint
What am i buying understanding website cost and technology 17 ntc
Ian Mariano
Thank you 3.25.2017
Kevin Schafer
Webセキュリティ入門(xss)
KageShiron
Knit One, Compute One - Software Art Thou?
Kristine Howard
The Fall of Trump
Susana Gallardo
いまさら聞けないselectあれこれ
lestrrat
How to go about Setting Goals the Right Way!
BizSmart Select
La última reconstrucción del Puente del Ebro en Elciego .- 1874
Jesús Fernández Ibáñez
Ad
Similar to 第51回NDS PostgreSQLのデータ型 #nds51
(20)
PDF
RDBってなに?
Soudai Sone
PPTX
Couch Db勉強会0623 by yssk22
Yohei Sasaki
PPTX
EmbulkとDigdagとデータ分析基盤と
Toru Takahashi
PPTX
EmbulkとDigdagとデータ分析基盤と
Toru Takahashi
PDF
Jjugccc2017spring-postgres-ccc_m1
Kosuke Kida
PPTX
Node.jsで使えるファイルDB"NeDB"のススメ
Isamu Suzuki
PDF
RDB技術者のためのNoSQLガイド NoSQLの必要性と位置づけ
Recruit Technologies
PDF
アナリティクスをPostgreSQLで始めるべき10の理由@第6回 関西DB勉強会
Satoshi Nagayasu
PDF
Yesod(at FPM2012)
Seizan Shimazaki
PDF
⑯jQueryをおぼえよう!その2
Nishida Kansuke
PPTX
Sql world を支える技術
Oda Shinsuke
PDF
PHP開発者のためのNoSQL入門
じゅん なかざ
PDF
MongoDBを用いたソーシャルアプリのログ解析 〜解析基盤構築からフロントUIまで、MongoDBを最大限に活用する〜
Takahiro Inoue
PPTX
AWSerにも知ってほしいDBの話
Kenichiro Mori
PDF
.NET最先端技術によるハイパフォーマンスウェブアプリケーション
Yoshifumi Kawai
KEY
Osc2012.dbに行ってきました
Masaru Kobashigawa
PPTX
MySQLメインの人がPostgreSQLのベンチマークをしてみた話
hiroi10
PPTX
サーバーレスでアンケートフォームを作ってみた
ryutakatori
PDF
【de:code 2020】 PostgreSQL もスケールさせよう! - Hyperscale (Citus) -
日本マイクロソフト株式会社
PDF
Chugokudb18_2
Kosuke Kida
RDBってなに?
Soudai Sone
Couch Db勉強会0623 by yssk22
Yohei Sasaki
EmbulkとDigdagとデータ分析基盤と
Toru Takahashi
EmbulkとDigdagとデータ分析基盤と
Toru Takahashi
Jjugccc2017spring-postgres-ccc_m1
Kosuke Kida
Node.jsで使えるファイルDB"NeDB"のススメ
Isamu Suzuki
RDB技術者のためのNoSQLガイド NoSQLの必要性と位置づけ
Recruit Technologies
アナリティクスをPostgreSQLで始めるべき10の理由@第6回 関西DB勉強会
Satoshi Nagayasu
Yesod(at FPM2012)
Seizan Shimazaki
⑯jQueryをおぼえよう!その2
Nishida Kansuke
Sql world を支える技術
Oda Shinsuke
PHP開発者のためのNoSQL入門
じゅん なかざ
MongoDBを用いたソーシャルアプリのログ解析 〜解析基盤構築からフロントUIまで、MongoDBを最大限に活用する〜
Takahiro Inoue
AWSerにも知ってほしいDBの話
Kenichiro Mori
.NET最先端技術によるハイパフォーマンスウェブアプリケーション
Yoshifumi Kawai
Osc2012.dbに行ってきました
Masaru Kobashigawa
MySQLメインの人がPostgreSQLのベンチマークをしてみた話
hiroi10
サーバーレスでアンケートフォームを作ってみた
ryutakatori
【de:code 2020】 PostgreSQL もスケールさせよう! - Hyperscale (Citus) -
日本マイクロソフト株式会社
Chugokudb18_2
Kosuke Kida
More from civicpg
(7)
PDF
オンライン英会話のモチベーション維持!
civicpg
PPTX
#nds54 ルーチンワーク自動化の話
civicpg
PPTX
#nds53 IoTプラットフォーム・工作でスーヴィード(低温調理)
civicpg
PPTX
jupyterの紹介 #nds48
civicpg
PPTX
#nds47 WebのテストをPythonでやってエビデンス取得作業から開放?
civicpg
PPTX
私の好きなPython構文 vol.2 #nds46
civicpg
PDF
Amazon SESのメール受信対応でサーバー減らせた話 #nds44
civicpg
オンライン英会話のモチベーション維持!
civicpg
#nds54 ルーチンワーク自動化の話
civicpg
#nds53 IoTプラットフォーム・工作でスーヴィード(低温調理)
civicpg
jupyterの紹介 #nds48
civicpg
#nds47 WebのテストをPythonでやってエビデンス取得作業から開放?
civicpg
私の好きなPython構文 vol.2 #nds46
civicpg
Amazon SESのメール受信対応でサーバー減らせた話 #nds44
civicpg
Recently uploaded
(9)
PDF
MahiroYoshida_セリフに着目したキャラクタロール推定に関する基礎検討_sigcc12th2025
Matsushita Laboratory
PDF
第三世代 ウェザーステーションキット v3 ー WSC3-L 日本語カタログ
CRI Japan, Inc.
PPTX
2025_7_25_吉祥寺_設計ナイト_ADR運用におけるデータ利活用の考え方.pptx
ssuserfcafd1
PPTX
baserCMS『カスタムコンテンツ』徹底活用術〜あなただけの管理画面を自由自在に〜
Ryuji Egashira
PDF
20250726_Devinで変えるエンプラシステム開発の未来
Masaki Yamakawa
PDF
20250730_QiitaBash_LT登壇資料_PDC_Kurashina.pdf
pdckurashina
PDF
【学会聴講報告】CVPR2025からみるVision最先端トレンド / CVPR2025 report
Sony - Neural Network Libraries
PDF
TaketoFujikawa_ComicComputing12th_inKumamoto
Matsushita Laboratory
PDF
20250729_Devin-for-Enterprise
Masaki Yamakawa
MahiroYoshida_セリフに着目したキャラクタロール推定に関する基礎検討_sigcc12th2025
Matsushita Laboratory
第三世代 ウェザーステーションキット v3 ー WSC3-L 日本語カタログ
CRI Japan, Inc.
2025_7_25_吉祥寺_設計ナイト_ADR運用におけるデータ利活用の考え方.pptx
ssuserfcafd1
baserCMS『カスタムコンテンツ』徹底活用術〜あなただけの管理画面を自由自在に〜
Ryuji Egashira
20250726_Devinで変えるエンプラシステム開発の未来
Masaki Yamakawa
20250730_QiitaBash_LT登壇資料_PDC_Kurashina.pdf
pdckurashina
【学会聴講報告】CVPR2025からみるVision最先端トレンド / CVPR2025 report
Sony - Neural Network Libraries
TaketoFujikawa_ComicComputing12th_inKumamoto
Matsushita Laboratory
20250729_Devin-for-Enterprise
Masaki Yamakawa
第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
Editor's Notes
#6:
例えば日付型を8桁の文字で保持するより、DATE型で保持したほうがよい ・不正な日付データ ・日付用の関数 ・データサイズ 同じように自分がよく知らなかったデータ型もどんどん使えばいいのでは?
#9:
ポスグレにはこんなにたくさんのデータ型があるんだよ!って言いたかったんだけど
#13:
あらためてタイトルの紹介
#16:
PostgreSQLはいち早く対応したが、最近のバージョンではmysql, sqlserverでもjsonが使えるようです。 Oracleは文字列データとして扱うがJSONとして検証するためのCHECK制約だけがあるっぽい。
#17:
こっちのほうがいいです 特殊なケースを除いてjson → jsonbでOK
#23:
本の情報を保存しよう!
#25:
1列に複数の情報は入れるべきではない。原則 柔軟な補足データを格納する場合に検討。 ・EAVパータン ・ジェイウォークパターン
#30:
開始<終了という挿入ルールだったり、CHECK制約があったはず。
#32:
betweenでやってたこと
#45:
getStringでJSON文字列が取得できる
#46:
JDBC APIにはJSON型はない。 JDBCの提供するインターフェース経由で使うのが通常。PostgreSQL提供のドライバの機能を使うしかない。 アプリケーションのどこでも書くのではなく、共通ライブラリなど限定された箇所で使うべき。
#47:
文字列としてsetStringするので、標準APIのみで可能。
#48:
JPAという仕様で、Converterが定義されているのでjsonb型ーStringの変換ができる
#50:
Pythonの場合はORマッパー的なライブラリは標準APIになっていない
#53:
Javaのときと同じようにPostgreSQL用ドライバが提供する機能でJson型をサポート
#54:
Javaのときと同じようにJSON文字列を渡して、SQL文内で型変換する。
#55:
カスタムデータタイプの機能が予めDBベンダー別に用意済み。
Download