質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.31%
PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Q&A

解決済

3回答

771閲覧

Postgresql 整数型の実運用について

ABtarou

総合スコア2

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

0グッド

0クリップ

投稿2022/02/19 07:18

Posgresqlのカラムデータ型の定義について
みなさんの意見を聞かせていただければと思います

自社で運用しているサービスでは
数値を保管するカラムには全てintegerを定義してテーブル作成しています

状態管理のステータスなど数値の上限が予測できるものでもintegerで統一していまして
個人としては新規テーブルではsmallintで定義することでストレージの軽減に繋がるのではと考えています

ここで質問になりますが
皆さんが運用している、または過去に触ったテーブル構造では
整数型を定義する際、integer,smallint,bigintの使い分けはされていましたでしょうか?
また適切に定義することで、ストレージの圧迫に効果は見込めそうでしょうか

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

それを言うなら、文字列型も同じです。
postgresは型の違いは結構厳密なので、色々な型を使用する場合、余程しっかりテーブル設計しないと、CASTが必要な場面が多くなります。
使う型によってはレスポンスも違ったりしますので、余程大規模でない限り、基本の属性は数値型はinteger,文字型はtextと考えるのが無難です。

投稿2022/02/19 14:48

sazi

総合スコア25426

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

現在ストレージの容量はかなり余裕があると思います。
さほど気にする必要がないと思いますが、1レコードあたりの使用容量はデータ型で試算できます。
どの程度のレコード数が常に保存されて、1日あたりどの程度増加するのかという予測を立てれば
おのずと計算できると思います。
ただ、その場合でも数値データを保存するだけであれば、ほとんど心配が必要ないのが現実な気がします。
これが画像データ(BLOB)をDBに保存するといった話ならもっと深刻に設計すべきかなと思うのですが、
たかが数値データであればintegerでいいんじゃないの?というのが個人的な感想です。

投稿2022/02/19 11:48

mingos

総合スコア4255

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ABtarou

2022/02/19 14:30

mingosさん ご意見ありがとうございます 簡単に試算してみた所 smallintで定義したとてMB単位ほどの軽減しか見込め無さそうです ご指摘の通り、画像や音声等のバイナリデータを扱う場合 慎重に設計する必要すべきで、この整数程度のそこまで気にしなくてもよさそうですね サービスのDBはクラウド内にたてていることもあり 料金周り等、少しセンシティブになりすぎていたかもしれません 大変参考になりました ご回答ありがとうございました
guest

0

最近は単位容量辺りのディスクの価格が下がっているのでギリギリでサイジングすることは少なくなったので、桁あふれでトラブルが起きた時の対応を考えるとあまり神経質にならなくても良いのでは?

気になるようでしたら、既存のいちばんレコード件数が多いテーブルでinteger → smallint に変更した時、PostgreSQL 12.4 数値データ型 で容量がどのくらい減らせるか計算してみては?

投稿2022/02/19 10:50

Orlofsky

総合スコア16417

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ABtarou

2022/02/19 14:38

Orlofskyさん ご意見ありがとうございます ご意見の通り、万が一の桁溢れのリスク等想定すると 整数の型定義にそこまで気を配らなくてもよさそうですね smallintにしたとて見込める効果も薄そうですし・ 貴重なご意見ありがとうございました 参考にさせていただきます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.31%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問