X



トップページDB@2ch掲示板
1002コメント295KB
PostgreSQL Part.11©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
0001NAME IS NULL 転載ダメ©2ch.net
垢版 |
2016/05/03(火) 15:42:33.27ID:???
PostgreSQL (ぽすとぐれすきゅーえる, ぽすとぐれす) について語るスレです。

●関連サイト
PostgreSQL 本家
http://www.postgresql.org/
日本PostgreSQLユーザ会
http://www.postgresql.jp/
ドキュメント
http://www.postgresql.jp/document/current/html/
ダウンロード
http://www.postgresql.jp/PostgreSQL
Let's Postgres (ポータルサイト)
http://lets.postgresql.jp/
pgFoundry
http://pgfoundry.org/

●前スレ
PostgreSQL Part.10
http://echo.2ch.net/test/read.cgi/db/1393353314/
0116NAME IS NULL
垢版 |
2016/09/25(日) 22:27:52.99ID:???
>>113
最近は差を詰めてきてるよね
とはいえ大規模になればまだまだOracle

>>114
PostgreSQLにも一応マテリアライズドビューあるでしょ

>>115
金払わないとパッチすらくれず、払っててもバグ修正してくれないけどな
0117NAME IS NULL
垢版 |
2016/09/25(日) 22:57:09.20ID:???
>>116
>金払わないとパッチすらくれず、払っててもバグ修正してくれないけどな
何その塩対応
0118NAME IS NULL
垢版 |
2016/09/25(日) 23:09:26.67ID:???
>>116
ポスグレのそれを使った事ないって意味ですよ。
Orackeの現場では頻繁に聞こえますね。でも結構トラブッてるようなw
0119NAME IS NULL
垢版 |
2016/09/26(月) 09:58:44.35ID:???
バグが修正されてユーザのコードが動かなくなったとき
危険なコードを書くのが悪いと言われるのがPostgres
専用の互換性パッチの見積もりをくれるのがOracle
0121NAME IS NULL
垢版 |
2016/09/27(火) 00:46:01.86ID:???
>>119
なるほど
ボラクル体質をとても明快に理解できた
そんでもってどっちがまともかは言わずもがなだな
0122NAME IS NULL
垢版 |
2016/09/27(火) 00:59:38.02ID:???
バージョンあがって動かなくなるなら、バージョンあげないだけだよ
そもそも特に困ってないのにバージョンあげるわけないだろう
ミドルウェアのバージョンが変わるなんて、5年ごとのリプレースだけだよ
0123NAME IS NULL
垢版 |
2016/09/27(火) 01:21:18.54ID:???
そのバグ修正の内容がセキュリティ脆弱性の改善でなければな
0124NAME IS NULL
垢版 |
2016/09/27(火) 01:50:31.29ID:???
データベースサーバにセキュリティパッチあてるわけないだろ
0126NAME IS NULL
垢版 |
2016/09/27(火) 02:25:22.67ID:???
きっと軽い間違いでしょう
0127NAME IS NULL
垢版 |
2016/09/27(火) 10:22:52.91ID:???
(データベースサーバはインターネッツに公開なんかしないんだから、セキュリティパッチあてる必要もないだろ)
ということかな
0128NAME IS NULL
垢版 |
2016/09/27(火) 14:56:40.91ID:???
そんなパッチがあるなら、やるだけの事かと。
0130NAME IS NULL
垢版 |
2016/09/27(火) 17:26:54.96ID:???
OSのパッチなのかRDBMSのパッチなのかでもかわってくるw
0131NAME IS NULL
垢版 |
2016/09/27(火) 18:24:19.86ID:???
この流れでOSパッチとかアホ過ぎやろ
0132NAME IS NULL
垢版 |
2016/09/27(火) 20:22:40.29ID:???
だからパッチなんてあるんかい
0134NAME IS NULL
垢版 |
2016/09/28(水) 00:10:30.52ID:???
おまえらPostgreSQLにセキュリティのためにパッチなんて当てたことあるの?
UPSERT使いたいからバージョンあげるとかだったらあるかもだけど
セキュリティなんて考えたこともない
0135NAME IS NULL
垢版 |
2016/09/28(水) 00:31:52.94ID:???
いつまで不毛な争いをしているのだ
0136NAME IS NULL
垢版 |
2016/09/29(木) 00:05:22.86ID:???
毛とNULLは無いほうがいいって聞いたことがある
0137NAME IS NULL
垢版 |
2016/09/29(木) 00:45:43.04ID:???
だれがハゲだと たここら
0138NAME IS NULL
垢版 |
2016/09/29(木) 00:52:51.97ID:???
coalesce(頭髪, 植毛)
0140NAME IS NULL
垢版 |
2016/09/30(金) 10:50:27.58ID:???
ついに9.6かぁ。
もうついていけないw
0141NAME IS NULL
垢版 |
2016/09/30(金) 11:22:57.45ID:???
>>139
・パラレルクエリ
・同期レプリケーション / シャーディング (postgres_fdw)
・全文テキスト検索 (たぶん日本語はダメ)
って感じ?
結構なパワフルユーザ向けだな。まぁ基本はやり尽くしているんだろうけど
0142NAME IS NULL
垢版 |
2016/09/30(金) 13:19:14.81ID:???
カンファレンスはまた盛況になりそうですね
0143NAME IS NULL
垢版 |
2016/09/30(金) 22:43:32.29ID:???
どうしてPostgreSQLって本屋さんに本が全然ないんですか?
MySQLはたくさんあるのに
0144NAME IS NULL
垢版 |
2016/09/30(金) 22:50:14.83ID:???
本が出る頃に改版するためじゃない?
0145NAME IS NULL
垢版 |
2016/10/01(土) 00:29:42.91ID:???
最新のシーラカンス本の対応バージョンは8くらいだったっけ?
0146NAME IS NULL
垢版 |
2016/10/01(土) 00:34:28.90ID:???
CTEやCONFLICTについてがっつり書いてるような本が欲しい
0147NAME IS NULL
垢版 |
2016/10/01(土) 00:52:05.59ID:???
となるとやっぱ最新マニュアルしかないわなぁw
そこそこ良く書けてるしわかり易いと思う。
0148NAME IS NULL
垢版 |
2016/10/06(木) 01:01:59.37ID:???
おすすめの記事ってどこかある?
ブロガーさんやニュースサイトでも何でも
PostgreSQLについて情報が集まるようなとこ探してる
0150NAME IS NULL
垢版 |
2016/10/06(木) 05:53:59.59ID:???
Let'sは最近、更新サボってるからなあ・・・
0152NAME IS NULL
垢版 |
2016/10/06(木) 08:21:09.55ID:???
さあ、みんな今こそ売り込みの絶好のタイミング
自社のURLを貼るんだ
0154NAME IS NULL
垢版 |
2016/10/14(金) 01:20:43.16ID:???
pgAdmin4の日本語化ってどうやるの?
0155NAME IS NULL
垢版 |
2016/10/17(月) 22:11:27.19ID:Xu2/z0cZ
エセ左翼の目的は、わざと突っ込みどころが多い主張をすることで自分たちへ注意を向けさせ、
カルトへ向かう非難の矛先を逸らすこと。
国益に反することを言ったり、主張が食い違うもの同士の対立を煽ろうとするので放置し難いが、
主義思想についての洗脳を受けているわけではなく、フリをしているだけなので、
言い負かされてもダメージを負った様子もなく、論点をすり替えられるかスルーされる。
まともに相手をしてはならない。
0156NAME IS NULL
垢版 |
2016/10/18(火) 05:08:12.81ID:???
pgAdmin3 は日本語で使ってるとなんかのコマンドが日本語で流れてエラーになった記憶があるので、それ以来ずっと英語で使ってる
0159NAME IS NULL
垢版 |
2016/11/23(水) 13:04:20.36ID:???
なんだかんだ満員でしょう
0160NAME IS NULL
垢版 |
2016/11/23(水) 16:40:12.30ID:???
まだ昨日時点ではチケットは残っているっぽかった。
0162NAME IS NULL
垢版 |
2016/12/10(土) 00:05:22.08ID:???
PostgreSQLって、OrderByを書かないと・・・・
毎回違う並び順になるの?
それとも、PrimaryKey順になるの?
0164NAME IS NULL
垢版 |
2016/12/10(土) 01:56:45.87ID:???
不定だわな。たとえ何かの順に並んでたとしても信用出来ない。
0165NAME IS NULL
垢版 |
2016/12/10(土) 04:55:25.07ID:???
>>162
一々ソーティングしなくていいから少しでも速く、省メモリで結果返して欲しいって時に勝手にソーティングされたら寧ろ迷惑だと思わないかい?
ソーティングは通常ではなくオプションとすべきだ
0166NAME IS NULL
垢版 |
2016/12/10(土) 07:56:41.23ID:???
なんという的外れな観点
0168NAME IS NULL
垢版 |
2016/12/10(土) 16:50:14.90ID:???
lsで何が返るかみたいなもんやないやろか
0170NAME IS NULL
垢版 |
2016/12/12(月) 13:42:28.85ID:???
不定だけど、大体はINSERTした順になることが多い
UPDATEしたりするとそれが最後になったりするので
id順とはいえない
もちろん出てくる順番を当てにしちゃいけないw
0171NAME IS NULL
垢版 |
2016/12/12(月) 22:30:45.27ID:???
で、なんでそんな物理的事情で並んだ順で返すのかって言ったら、『一々ソーティングしなくていいから少しでも速く、省メモリで結果返して欲しいって時に勝手にソーティングされたら寧ろ迷惑だろ、ソーティングは通常ではなくオプションとすべきだ』ってことでないの?
0173NAME IS NULL
垢版 |
2016/12/13(火) 08:19:35.95ID:???
>>170
クラスタ化インデックスだとpk順になる。
0174NAME IS NULL
垢版 |
2017/01/29(日) 10:18:17.47ID:60pB1fs/
>>170
そんなのどんなRDBMSでも同じで、実装を考えれば、そうなるだろうが。
0175NAME IS NULL
垢版 |
2017/01/29(日) 10:20:19.64ID:60pB1fs/
>>171
違う。RDBのレコードはソート指定をしないかぎり不定というのが標準SQLでの仕様だから。
0176NAME IS NULL
垢版 |
2017/01/29(日) 10:37:46.86ID:???
PHP+PostgreSQLで運用する場合、元号の処理ってどうしてる?
自分でしか使わないシステムなので、極力西暦で通すか、どうしても必要な場合は1988引いてるけど(基本的に昭和のデータは扱わない)、今度の改元がなぁ
0177NAME IS NULL
垢版 |
2017/01/29(日) 11:01:42.79ID:60pB1fs/
>>176
データベースだというのに西暦→和暦マスタテーブルを作ろうという発想がないことに驚く
0178NAME IS NULL
垢版 |
2017/01/29(日) 11:05:32.41ID:???
>>176
昭和99年とかの特殊な要件がなければ内部は西暦、外部とのやり取り時に変換が普通かと
0179NAME IS NULL
垢版 |
2017/01/29(日) 12:10:35.54ID:???
>>176
表示なり入力なりエンドユーザに一番近いところで変換したいな
そもそも元号という「汚い」ものを可能な限り扱いたくないし、
Postgres用の変換はおそらく自作が必要だが、PHPやJS用なら適当に拾ってこれるから
0180NAME IS NULL
垢版 |
2017/01/29(日) 12:20:13.52ID:???
>>177
マスタテーブルだけで変換しようとすると、年の途中での改元に対応しないといけないんで、1日あたり1レコード要るんじゃね?
100年で36,525か36,524になっちゃう
0182NAME IS NULL
垢版 |
2017/01/29(日) 13:32:09.18ID:60pB1fs/
>>180
アホくさ。なんで年号が変わらない部分の日の単位でデータを持つんだよ。

それじゃあ自分の生年月日を書くのに今日からさかのぼって一日ごとに列挙して書くようなもんだろw
0183NAME IS NULL
垢版 |
2017/01/29(日) 15:26:01.88ID:???
明治:1868-01-25 〜 1912-07-29
大正:1912-07-30 〜 1926-12-24
昭和:1926-12-25 〜 1989-01-07
平成:1989-01-08 〜
これをどうUIに反映するかは、各自の考え方だろう。
0186NAME IS NULL
垢版 |
2017/02/01(水) 14:47:49.81ID:4qKxf55o
インデックスについて教えてください。
調べましたが「検索が早くなる場合もあるらしい」くらいしか分かりませんでした。

・ インデックスは作成するだけでよいのか?
   検索時に作成したインデックスを指定したりしなくてよいのか。
   調べた限り指定する方法がなかったため、作成するだけで効果があるように見えた。

・ REINDEXでのロック時の挙動
   インデックスがロックされると聞いた。
   インデックスがロックされるだけで検索自体は可能なのか。

・ とりあえずインデックスを作成しておけばよいのか?
   インデックスがそんなに便利なものなら、ハードディスクの容量が許す限り、
   検索しそうなものは片っ端からインデックスを作成しておけばよいのか。
0187NAME IS NULL
垢版 |
2017/02/01(水) 15:20:55.01ID:???
>>186
> ・ インデックスは作成するだけでよいのか?
はい。

インデックスを使った方が検索コストが低い場合は、自動的に使われます。

> ・ REINDEXでのロック時の挙動
>    インデックスがロックされるだけで検索自体は可能なのか。
いいえ。検索もブロックされます。

通常はreindexする必要はありません。
将来、reindexが必要だと感じたら(容量が増大したなどの場合)、どう対処するのが
良いか検索するとよいです。

> ・ とりあえずインデックスを作成しておけばよいのか?
いいえ。

インデックスがあるということは、INSERT/DELETEのときにデータ本体だけでなく
インデックスそのものも更新する必要があります。
単純に言えば、処理時間が増えるということです。
不要なインデックスは生成しないようにするのが良いです。
0188186
垢版 |
2017/02/01(水) 15:43:28.39ID:???
>187
ありがとうございます。
助かります。
0189NAME IS NULL
垢版 |
2017/02/01(水) 18:30:22.45ID:ndjPxyEX
ポスグレにかぎらない初心者の質問が多いな。
0190NAME IS NULL
垢版 |
2017/02/02(木) 17:57:30.34ID:???
日本語扱うならencodeはCだろって言う人を結構見る気がしますが、なぜutf8じゃ駄目なんでしょうか?
0192NAME IS NULL
垢版 |
2017/02/02(木) 18:41:25.46ID:???
えっ・・・
今まで作ったシステム、全部utf8にしてきてしもうた・・・
0193NAME IS NULL
垢版 |
2017/02/02(木) 19:10:07.87ID:???
encodeとlocaleは別だぞ。
encode=utf8 かつ locale=C が推奨なのはよく見る。

Linux (glibc) はlocaleの実装をサボっているので、C以外に設定しても性能が落ちるだけで何の利点もない。
Windowsなら文字列の比較やソートに差が出るので、用途に適して選べばいい。
0194NAME IS NULL
垢版 |
2017/02/02(木) 22:45:30.91ID:???
initdb --encoding=UTF8 --no-locale ←これが基本かなと
0196NAME IS NULL
垢版 |
2017/02/03(金) 14:49:30.55ID:???
>>193
Linuxでも当然ながら差が出る。
なぜなら、文字コードは辞書順には並んでないから。
0197NAME IS NULL
垢版 |
2017/02/03(金) 15:00:11.71ID:JY8XYZfi
>>196
どんな文字コードでも漢字の並び順は、日本人が見ても意味のある順番になってないからな。
0198NAME IS NULL
垢版 |
2017/02/03(金) 15:45:41.80ID:???
>>196
Linuxもまともになったのか?
昔使ったときはlocale=ja系でも変わらず文字コード順に並べられたんだが
0199NAME IS NULL
垢版 |
2017/02/03(金) 16:06:32.65ID:???
>>198
「辞書順」の正しい定義を知らないけど、少なくとも文字コード順には並ばないよ。

create table foo(s text)に、漢数字の'一'から'九'をインサートし、以下のクエリを実行。
select array_agg(s) from (select s from foo order by s) as t;

locale=C -> {一,七,三,九,二,五,八,六,四} -- 文字コード順
locale=ja_JP.UTF-8 -> {一,九,五,三,四,七,二,八,六} -- 辞書(?)順
0200NAME IS NULL
垢版 |
2017/02/03(金) 16:35:10.23ID:???
文字コード順でも辞書順でも、それを正解とするかどうかは要件次第。
ちなみに漢数字は、訓読み順で並んでいる。
0201NAME IS NULL
垢版 |
2017/02/03(金) 16:45:47.54ID:???
>>199
理解した。Linuxでも順序は変わるね。
ひらがな/カタカナの濁/半濁の扱いは今でも差があるようだ。設計思想?互換性?
 msvcrt: ハはバばパぱ
 glibc : はばぱハバパ

環境依存が怖い。要件次第だが、自前で「ふりがな」列を用意したほうがマシだな。
0203NAME IS NULL
垢版 |
2017/03/21(火) 17:08:09.19ID:???
他人に公開する予定の無い、自分専用のwebサイトを作る場合でもSQLインジェクション対策はしておいた方がいいよね?
クラスを転用するときに問題になるし、悪意が無くてもエラーのもとだし
0204NAME IS NULL
垢版 |
2017/03/21(火) 17:45:20.99ID:???
おお 久々
3.19行った人いないの?
0205NAME IS NULL
垢版 |
2017/03/21(火) 19:35:41.10ID:???
>>203
言語によるけど今時パラメータクエリぐらいは使えるだろうから普通にパラメータクエリでやるわな
あとから見てもその方がわかりやすいし
0206NAME IS NULL
垢版 |
2017/03/21(火) 20:16:56.50ID:???
>>205
PHPで言えば、pg_query_params()とか?
0207NAME IS NULL
垢版 |
2017/03/21(火) 21:01:55.15ID:NIvfjcd/
phpって対策されていないやつ
非推奨じゃなかったっけ

おいらはPDOでやってるかな
0209NAME IS NULL
垢版 |
2017/03/22(水) 00:21:47.00ID:???
ぽすとぐれすきゅーえる
ぽすとぐれすえすきゅーえる
0210NAME IS NULL
垢版 |
2017/05/10(水) 00:41:30.16ID:Yh/Qr3SR
TIMESTAMP (WITHOUT TIMEZONE)とCURRENT_TIMESTAMPについて教えてください。
INSERTにてCURRENT_TIMESTAMPで入れたあと、SELECTで取り出すと日本時間になっています。
どの時点で日本時間になっているのでしょうか?

1. CURRENT_TIMESTAMPの時点ではJSTだが、INSERTするときにJSTがUTCに変換されて保存され、
  SELECTで取り出すときにシステムの時刻を見て+0900されている
2. CURRENT_TIMESTAMPの時点ではJSTで取得されるが、
  元々これにタイムゾーンのデータはなく、そのまま保存され、
  SELECTで取り出すときは同じシステム時刻を使ってるからたまたま同じタイムゾーンとして取得されている
3. CURRENT_TIMESTAMPの時点ではUTCで取得され、保存もUTCだが
  SELECTで取り出すときはシステム時刻を参照して勝手にJSTにしている
4. その他の未知の仕組み
0211NAME IS NULL
垢版 |
2017/05/10(水) 07:47:06.12ID:???
>>210
http://www.postgresql.jp/document/current/html/datatype-datetime.html
> 通常timestamp without time zoneの値はtimezoneのローカル時間としてみなされる
とあるから、言葉通りだとするなら:
・INSERTするときに時刻の値だけを保存する (+0900を無視)
・SELECTするときに現在のタイムゾーン扱い (+0900を追加)
SET TIMEZONE TOしながら試してみれば検証できるかも
0212NAME IS NULL
垢版 |
2017/05/12(金) 18:06:02.05ID:???
>>210
まず前提として、without time zoneをselectした結果にはtime zone情報はないのだから、UTCもJSTもない。
次にcurrent_timestampは、tz情報付きのデータ。
それをwithout time zone絡むにインサートすると、tz情報は切り捨てられる。(たとえば、"2017-05-12 18:00:00")

そのデータを、日本で取得しようがアメリカで取得しようが、tz情報なしの"2017-05-12 18:00:00"が取得される。
つまり、アメリカで取得した人は、現地時間の"2017-05-12 18:00:00"だと見えるということ。
0213210
垢版 |
2017/05/12(金) 23:59:44.61ID:???
>>211-212
ありがとうございます。
世界向けのSNSを作ろうとしたのですが、これがネックで
時間部分の設計ができない状態でした。
助かります。
0214NAME IS NULL
垢版 |
2017/05/14(日) 15:53:45.17ID:???
お世話になります。

psql で database ごとに history を分けて表示したい (\s) のですが、
(他の databae の history を表示したくない)
どうやったらいいのでしょうか?

よろしくお願いします。
0215NAME IS NULL
垢版 |
2017/05/14(日) 16:12:10.64ID:???
historyって、homeの .psql_history 出してるだけだからなあ
db切り替えるたびにリネームするとか?
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況