PostgreSQL Part.11©2ch.net
レス数が1000を超えています。これ以上書き込みはできません。
pgadmin4って使い勝手良さそうなのかな?pgadmin3の使い勝手が良いので10に移行出来ないw >>474
4はあまり使われていないと思う。
PostgreSQLをGUIで操作しているひとが少ないせいでよくならない。 学びはじめの頃に3をちょっと使ってみた。
最近4を使ってみたが、なんかバグっぽい感じ?
どちらにしても今となっては必要性を感じないな オラコーは売れる数減ってきてるのに売上高維持しようとしてるから、毎年値上げしててその額が半端じゃないらしいな。 postgresとmariaにがんばっていただきましょう >>479
お金を取る方が健全。マイクロソフトなんてビジネスとしては崩壊しかかっている。 >>481
"マイクロソフトのビジネスは崩壊しかかっている"
無知すぎワロタ 売り切りソフトからAzureに軸足を移したことを知らんのね >>481
SQL-Serverもそれなりの対価頂いておりますが… https://youtu.be/COxAA8145vM
Microsoft AzureのAzureはカタカナでアズールと表記するのが現在では一般的となっている Microsoft、Azure売上高倍増で予測を上回る増収増益
Microsoftの1〜3月期決算は、Azureを含むクラウド事業が好調で売上高は16%増、純利益は35%増だった。
[佐藤由紀子,ITmedia] 2018年4月27日
http://www.itmedia.co.jp/news/spv/1804/27/news072.html
米Microsoftは4月26日(現地時間)、2018年第3四半期(2018年1〜3月期)の決算を発表した。「Azure」や「Office 365」などの商用クラウド事業が好調で、2桁台の増収増益だった。
売上高は前年同期比16%増の268億2000万ドル、純利益は35%増の74億2000万ドル(1株当たり0.95ドル)だった。売上高、1株当たりの純利益ともにアナリスト予測(売上高は258億ドル、純利益は0.85ドル)を上回った。
Intelligent Cloud部門が今期も好調で、Azure Computeの売上高が93%増だった。部門全体の売上高は17%増の79億ドルだった。
Intelligent Cloud部門
https://i.imgur.com/Wnlwc1L.jpg OfficeやLinkedIn、Dynamicsを扱うProductivity and Business Processes部門の売上高は17%増の90億1000万ドルだった。企業向けOffice 365の売上高が42%増と好調。
LinkedInの売上高も37%増と好調だった。企業向けOffice 365のMAUは1億3500万人、コンシューマー向けのMAUは3060万人。
Productivity and Business Processes部門
https://i.imgur.com/FxHA02l.jpg
Windows、ハードウェア、Xbox、検索のMore Personal Computing部門の売上高は、Windows、ゲーム、Surface、検索が好調で13%増の99億2000万ドルだった。検索は16%増、ゲームは18%増。ハードウェアではSurfaceの売上高が32%増だった。
More Personal Computing部門
https://i.imgur.com/EHknOcd.jpg >>451
嘘つきだな
こういうヤツに限ってMySQL使ってるとか?
MySQLとかオラクルが豹変したら死ぬぞ?w >>479
オラクルがJavaの次に狙ってるのはMySQLに何らかライセンス徴収ルール作る事
OSSだから、そんな事有り得ないとMySQLユーザーは言うがJavaも有り得ないと言われてた
でMariaDBに逃げたヤツが一番賢い、と言われる様になると思う MySQLに商用ライセンスが存在するのは元からやん。
Javaの話もなにか勘違いしてないかい? でも、MariaDBに逃げとくに越したこたないだろ。
MySQLの先行きが読めないことは間違いないし、そろそろそれぞれで違いが出てきてるみたいだし。 >>493
PostgreSQLって何がいいん?w なんでPostgreSQLのスレにMySQLやMariaの信者が居るんだ? PostgreSQL信者しか書き込んだらいけないらしい 自分が使っている、気に入っているものがやっぱり一番だと思いたいのが人間だし
それを否定されると自分が否定されていると思っちゃう人もいるわけだし
そのあたりの空気を読めることが望まれているのでしょう PostgreSQLに全く関係のない話題を書き込まれてもなぁ・・ AMDのスレによくIntel派の人がRyzen腐しにくる メインのスレに書き込める程知識が無い
もしくはスレ住人に相手にされてないor嫌われてる
↓
関係ないスレに書き込む
↓
スレ違いなのでそのスレの住人に怒られる
これを相手にされていると勘違いする ←今ここ
↓
関係ない話題でスレ常駐し始める
↓
徹底的にスルーされるので飽きて居なくなる
もしくはスレ住人に擬態する DB系のスレは最近、だいたい過疎ぎみだからな。
書き込みがあるだけマシなんでは。w 早くMySQLにライセンス徴収開始されんかなw
Javaと同じ運命にして欲しいわw >>509
この場合のライセンス徴収はGPL版にも商用版と同じライセンス適用の話ね >GPL版にも商用版と同じライセンス適用
意味不明すぎるw >>510はGPLなら常にタダだと思ってるバカ w >>513
"常に"なんてどこに買い込みしてる?
アホか >>504
そういう不完全な人の話は聞く耳持たんなw GPLでも徴収できることを知ってたら>>509みたいなアホレスはしないだろ
>>514は傷口広げて自爆するバカ w 失望しました! PostgreSQLに乗り替えます >>519
それはわざとだよ。MySQLを徐々に衰退させたいため。 >>520
そのポスグレさんは知っているひとが少なくて苦戦する。
しかもシェアが低いのでとにかく情報がなく、ソースコードまで読まなければならない。 まあOracle, MySQL, SQL-Serverの御三家に比べりゃ少ないけどそれ以下の有象無象の中ではトップだから情報が少ないとか言ってるのは単なる情弱 Oracleは早くMySQLユーザーをOracleに移行させたい
よってMySQLのサポートなんておざなりになるのは当然
MariaDB、PostgreSQLが元MySQLユーザーの受け皿になる 型チェックとか厳しく無いものから厳しいものへは移行せんだろうな WordPressなんかMySQL使用前提だがオラクルがMySQLのライセンス徴収厳密化したらユーザー発狂するだろうな >>MySQL系は大規模データベースを想定して作られていないせいで、管理は楽だが、物理ファイルと論理ストレージが一緒のため、データ量が多くなってくるとデータベースを止めずに何か変更することが難しくなる。
やっぱりPostgreSQLだな やらなくてもダメではないけど、しなくてもいいわけでもないらしいが?
どないやねん。 >>532
Autoをやってる。というかな?
勝手にやってくれているんだから、それでいいやって思うわ。 >>530がvacuumやってるのか?
って言うからvacuum自体は必要だよって言っただけ
設定が必要かどうかは状況による どのRDBMSでも自動ではやらないよな。そんなのされたら一時的に使えなくなる。 vacuumなんてするのは
うんこ収集車とポスグレぐらいだな >>537
他のDBMSは領域再利用するから基本不要
ただファイルシステムとかと同様に断片化してくるから再構成をすることもある
http://cosol.jp/tech/detail/d3_maintenance_table.shtml >>539
ども
その時にやるか後でやるかのトレードオフだね。 MySQLスレで質問したら、自分で試せ、で終わるらしい
こっちはOK PostgreSQLを業務利用してからOracleをやることになったんだけど、
それで分かったこと。
PostgreSQLはSQLも設計仕様も、とても綺麗。
Oracleはダメ。信じられないくらいのポンコツ。 Oracleで綺麗じゃないとか言ってるのか。MySQLなんか、とんでもなく汚いぞ。 僕は逆に10年以上前にOracleからPostgreSQLに変えたけど、特に困難なく移行できた。
仕様も変なクセがないし他のスタッフからも不満はまったくない。
それにまず社長が喜んだ(笑) 汚さで言えば
MySQL(MariaDB)>Oracle>PostgreSQL
キッチリ手順明確なのがPostgreSQL
どうにかやれば動いてしまうのがMySQL MySQLはべつに汚くないぞ。
ところどころがちょっといいかげんなだけ。 僕みたいな年寄りには、MySQLは、
・単なるサブセット(だから多少早くても当たり前)、
・マルチバイトが使い物にならない
っていう認識がこびりついてて使う気にならない そりゃ二十年近く昔だろ。w
そのころは、ふつうにお安く使えるのはMySQLくらいしかなかったがな。 選択肢増えた今はMySQLでなければ、と言うシーンが無い PostgreSQLのスレだから言うわけじゃないけど、
もうPostgreSQLしかねーだろ!
他はカス! >>554
そして、PostgreSQLでなければというシーンもない。
ま、ふつうの人にはどっちも同じ。 >>555 だよね!!
MariaDB、MySQL、FireBirdは触ったことはないが・・・。
OracleはSQLPlusで、操作したことはあるけど面倒。
SQLServerも面倒で触れたこともない。 Oracleは、簡単なことをするにもサブクエリー使わなきゃならないのよ。
なので3階層くらいのサブクエリーは普通になってしまう。
で、可読性が落ちてしまい、自分でも理解不能になる。
人によってはビューやストアドプロシージャで解決しようとして、これらを書きまくりメンテ不能に陥る。
PostgreSQLなら素直で簡潔なSQL書けるのに、と思うよ。 >>558
Oracle PL/SQLのメンテナンスはしんどい
人それぞれでロジックの組み方違う
ライセンス含めOracleはもう厳しい ここってpostgres派生のgreenplumについて聞いても大丈夫?
ライセンス価格わからなくて困ってる >>560
具体例はいちいち覚えていない・・・
そんなの覚えても役立つことなどないから覚えようという気がしないので。
ごめんね。
でもPostgreSQLでSQL書ける奴が業務でOracleに乗り換えれば、その不満はすぐに感じると思うぞ。 >>562
なるほど知ったか指摘されたら答えられないってことね
了解 >>558
それは手続きの隠蔽にすぎず、SQLの可読性が下がる。
一度、ソートしないと結果が得られないのに、一度のSELECTでできるかのように思わせる方が問題だ。
このあたりの独自格調のせいで、IT技術者であっても誤解が広まって、SQLはこう書くとこう処理されると言い始める。 なんで>>558と>>564は通じあっとるんやw
バカ同士の会話おそるべしw >>566
商用利用前提でコミュニティ版でパフォーマンス検証したいけど、そもそも高すぎたら却下されるから、知ってる人がいたら大まかでいいから価格感が知りたかったのですね 『PostgreSQL全機能バイブル』
鈴木 啓修 著
は良本だな。俺のバイブルになってる。 7のやつは評判よかったね。
10のはさすがにもう出ないか。 10から入門する自分としてはそれほしい…(´・ω・`) PostgreSQL完全機能リファレンス
なら 8.1 対応ですよ。
10 だってこの本(8.1用)で大丈夫だよ。 宣言的パーティショニングとか10でついた機能とかの説明もほしいの…(´・ω・`)
パーティショニングした列指向テーブル読んでもパラレルクエリにならんのを解決できるか調べたい SRA OSSやHPが毎年新機能評価報告出してくれるのはありがたい。 psycopg2の本ってあるの
なかったら誰か書いて、買うから… sqlはそこそこ書けるプログラマです
インフラ担当が居ない案件に派遣されてしまいました
開発から運用まで行うとしたらどんなことを勉強したらいいでしょうか それだけじゃなんも答えられんやろ。
一口にインフラといっても、OSのインストールやらネットワークの設定やら、そもそも物理設置やら、いろいろ。 インフラ技術者がいないのであれば、そこが重要だと思ってないし、自分の自由にできる可能性が高くてうらやましい。 勉強できるってのはいいね。
聞けない人がいないなら、会社持ちで外にリサーチに行けばいいし。 sqlはそこそこ書けるプログラマって言ってんだろ。
DB専任なんてどこに書いてあるんだよ。 開発から運用まで、何をしたらいいのか皆目見当もつかない(sqlはそこそこ書ける)プログラマ
でした 楽しんでやればいい。
そんなサイトがいっぱいある。 >>581
1.システム化したい業務の聞き取り
2.システム化したい業務の仕様書作成
3.実作業 Amazonプライムデーのサーバーダウン原因は「データベースをOracleからPostgreSQLに変えた」ため
https://hayabusa9.5ch.net/test/read.cgi/news/1540429567/ AmazonによるPostgreSQLへのなかなか貴重な貢献だ >>601
俺の第一印象も「Oracleすげー」より、「これでポスグレが一皮むけるな」だった >>600
Amazonプライムデーのサーバ障害、AmazonがOracleからAurora DBに乗り換えたのが原因ではない。Amazon CTOがCNBCの報道を否定
https://www.publickey1.jp/blog/18/amazonamazonoracleaurora_dbamazon_ctocnbc.html
なんかそのニュースがフェイクニュースだった可能性も出てきているな 記者が、自分で勝手にストーリーをつくってしまって、あわない理屈を排除するのは、どこの国でもおんなじか。。。
たしかに、セーブポイントの仕様が違うなら違って当然で、その仕様の通りにしてないアプリが完全に悪いわな。 無能なプログラマーが、トランザクションの中で無用なsavepointを連続して発行していたのが原因の模様。
アマゾンのシステム開発してる人の中にも、こういうレベルの人がいるんだな。 PostgreSQLの仕様分かって無いヤツがプログラム作った結果か
有り得る話だな トラブルはあったにせよ、Amazonほどの規模のとこでもPostgreSQLが使われるんだって思うと感慨深いなぁ AmazonにはAurora PostgresとAurora MySQLがある中で、Aurora Postgresを選んだというのもいいね。
徹底的に比較した上でPostgresを選んだんだろうから。 Oracleから移行ってことなら比較以前にMySQLは選択しにくいよね MySQLのほうが性能は高いかもだけど、機能は少ないからね。 単純に「MySQLのほうが(PostgreSQLよりも)『性能』が高い」っていうのはどうかな? MySQLはその内Javaの様にランタイムライセンス課されて終わるよ
Oracleの狙いはそこ
今現在、そこそこシェア取ってるから >>617
無償版をJava同様、6ケ月毎の更新にするって話
で、OpenJDKの様に無償版をOpenMySQLにして6ケ月毎にバージョンアップする
6ケ月毎にバージョンアップって現場ではやってられないので、MySQL→MariaDB移行にする中小企業が増える
MySQLが廃れる方向って話 >>625
勘違い
MySQLと比べてるのが滑稽なだけ
せめて比べるとしたらMariaDBだろっていうツッコミが>>612なのに
なぜかそれに過剰反応してる信者(>>613)が一人いるだけ MariaDBと比較と言っても実質MySQLの無償版と同じだからね 別に何と比べようが各人の自由だろ
滑稽とか言う方が滑稽だよ アマゾンがオラクルからDB移行した件で、Amazon AuroraのPostgresと同じくAuroraのMySQLの話題の流れで、アホが突然MariaDBガーとか言い出したからバカにされたんだろw >>632
ちょっと何が言いたいのかわかんないっすね AWSのAuroraがMariaDBをサポートしてたら、こんなに(?)バカにされなくてすんだのにね
可哀想だね(´;ω;`) ポスグレ入れてたサーバのjavaを削除した後にポスグレのサービスが起動しなくなったのですがポスグレはjavaに依存しないですよね? ダンプサイズって上限あるのか知りたい。。50GBとか100GBとかいけるもの? DBMS of the year 2018 受賞おめでとうございます 初めまして
9.3.5から9.3.22にアップデートしたいのですが
ググってもメジャーアップデートの方法しかヒットせず困っております。
マイナーアップデートの方法が丁寧に説明されている書籍やHPや
教えていただけるイケメンはいらっしゃらないでしょうか? >>642
OSはlinux レッドハットの6になります。 >>642
DB停止して上書きインストールするだけやで。
9.3.22のrhel6用のrpm用意して
yum localinstall rpm列挙
でよいかと。 >>647
ありがとうございます!
そのあたり調べてみます。
>>645
完全に外部から閉鎖している社内システムなんでマイナーアップデートすら必要ないんですが
外部監査で指摘されてスーパースーパーハッカーがキャッツアイみたいに侵入したら
だめだよね?って真顔でいわれてSEチームが全員じゃぁおれら辞めるわって言いだして
折衷案ですることになった非常にくだらない件でしてEOLは関係ないんです >>648
あほすぎ。w
たいへんやな。
そこまでいかれたら、DBなんかなんでもおんなじやのに。 >>648
言いたいことは分かるが草生える
そう言う話になってる時点で保守契約とかもしてなさそうなのでその時点でどうなの?って気はする 俺んとことなんて、内部監査で同じこと言われる。
しかも言う側はエンジニアではない素人だ。
何も知らないカスどもと思うけど誰も何も言えない。
折衷案まで漕ぎつけるだけ、まだいい。ウラヤマシ。 >>651
保守なんか関係あるか?
オレはこんふうに想像。w
1 上層部が適当に外部監査を依頼。
2 とくに問題なし。
3 監査側としてはなにか指摘しないといけない。
4 どうでもいいことをムリヤリ指摘。
5 上層部が真に受ける。 >>653
完全に内部専用のサーバを外部業者入れて監査する厳しさがあるなら、内部専用でも本番環境なら保守契約くらいやっていそうなものだ
書いてる内容的にそうでも無さそうだから、体制の矛盾を感じて不思議に思っただけ
自分的には、会社のポリシーでEOL製品の継続利用はNGってなってるだけじゃねーのと マイナーアップデートしたらキャッツアイに勝てるの? pgAdminでテーブルを作ろうとしているのですが、データ型で[ ]がついてるものとそうでないものの違いは何ですか?
データ型の横に別に長さを指定もできるようなので混乱しています。 クラスタリングするならpg pool 2が良いのでしょうか? >>666
だよね!
>>667
SQLServerと比較すると初回アクセスのみ結構遅い DB単体のスピードを追求する場面ってあるの?
大抵は回線とかクライアント側の端末がボトルネックになってる気が >>671
> DB単体のスピードを追求する場面ってあるの?
はっ?
> 大抵は回線とかクライアント側の端末がボトルネックになってる気が
でかいシステムだと何台のクライアントからアクセスあると思ってるんだよw 読み取りを分散させるとこまで出来ました
更新を分散させつつ整合性を保つ魔法はまだわかりません >>671
たいていDB上にデータとビジネスロジックを置くので、DB以外に速度を求められる場所がない >>669
初回アクセス速度を速くしたけりゃ、共有バッファを調整して、DB起動時に一度そのSQLを実行してテーブルをメモリに乗せときゃいいんじゃね? というSQLを起動時にやってるという話を聞いた事がある。 psqlのロールとシェルのユーザって同じ名前じゃなきゃログインできないの? 設定次第。pg_hba.confでidentになってるとそうなる。 hbaってふんふんってわかった気になるけど、SSLでやろうと思ったりすると
結構迷うよね。 >>680
mda5に直したらいけましたサンクス
新規のロールってグラントしてもらわないとログインすらできないの? 肥大化したテーブルから古いデータをバックアップテーブルに退避して、その後削除するようなクエリを書きたいのですが、そもそもこのような対応は一般的なのでしょうか?
他に一般的な手法があれば教えてください。 毎日決まった時間に指定のクエリを実行したいのですが、pgAdmin4でそのようなことは出来ますか? 住信SBIネット銀行、オンプレオラクルをAurora??PostgreSQLに移行。性能や可用性もPoC上、問題ないと判断。83%コスト削減。銀行の勘定系のクラウド化の時代なんだな。もはや、放送のシステムやマスターもクラウド化できる時代や 銀行はオンプレミスでないと流石に個人情報漏れが怖いわ
クラウドってIntel のCPU積んでるだろうから、毎月追加更新される脆弱性報告見てると不安が増すばかり
自社はしっかりシステム作ってても、同じサーバで稼働してる別会社のシステムが杜撰だったとして
セキュリティ突破されようものなら、煽りを食って連座して突破されてしまうわけだし
逆に言うと、銀行系のシステムを狙ってわざとセキュリティの甘いシステムを、
銀行が使用してるクラウドサーバと同じサーバで稼働させてクラックしてそこをつたって銀行の情報抜き取るとか
そういう新型の犯罪が成立しそうだし
銀行や政府は漫然とクラウドを利用するべきではない >>696
> 逆に言うと、銀行系のシステムを狙ってわざとセキュリティの甘いシステムを、
> 銀行が使用してるクラウドサーバと同じサーバで稼働させてクラックしてそこをつたって銀行の情報抜き取るとか
自分が稼働させたサーバーを自分でクラックするのかw
アホすぎる… >>697
今の仮想環境を知らんのか。
アホすぎる。 >>698
へー、今の仮想環境だと自分で設置したサーバーをわざわざクラックする必要あるんだw
ちょっと詳しく説明してくれるかな 授業料を払うつもりがあるんなら、説明したることを考えたってもええで?
タダというんはムシがよすぎるやろ。w admintool4の使い勝手が良い
Windows10にもdebian9にもpostgreSQLを入れている。 admintool4ってググってもこのスレしか出てこないけどpgAdmin4のこと? >>709
そんな難しい用語ださなくていいから、もっと単純にいこうぜ 同じメモリー8GB
内部ストレージ500GB(HDD)Windows10
内部ストレージ240GB(SSD)debianGNULinux strech9
Windows10のpgAdmin4が初期起動スピードでLinuxに1分以上の差をつけられて
負けたわ糞 >>710
『市民権を獲た○○』はいくらなんでも市民権を獲たイディオムだろう…… >>713
初回起動だけは我慢するしかない
2回目以降は同等に早い postgreSQLを勉強するついでに資格取りたいんだけど、OSS-DBしかない感じ?
参考書が古い・・・ 複数の外部キーを複合主キーとして使うテーブルを作りたいんですが、以下のケースの場合はどうすればよいでしょうか?
---------------------------
クラス番号(主キー) | クラス名 |
1 | A組 |
---------------------------
---------------------------------------------
クラス番号(外部キー) | 出席番号(非ユニーク) | 氏名 |
1 | 10 | Cさん|
---------------------------------------------
※クラス番号と出席番号の組み合わせで複合主キー
上記テーブルがある状態で、以下のテーブルを作りたいのですが、
出席番号が非ユニークな為、外部キーに出来ません。
サロゲートキーを使わずに、クラス番号と出席番号の組み合わせで複合主キーにしたいのですが、どうすればよいでしょうか。
------------------------------------------------
クラス番号(外部キー) | 出席番号(非ユニーク) | 情報 |
------------------------------------------------ こうかな?
CREATE TABLE class (
id int NOT NULL PRIMARY KEY,
name text NOT NULL
);
INSERT INTO class(id,name) VALUES (1,'A組');
INSERT INTO class(id,name) VALUES (2,'B組');
CREATE TABLE person (
id int NOT NULL REFERENCES class(id),
number int NOT NULL,
name text NOT NULL,
PRIMARY KEY (id, number)
);
INSERT INTO person(id,number,name) VALUES (1,10,'Cさん');
INSERT INTO person(id,number,name) VALUES (2,10,'Dくん');
INSERT INTO person(id,number,name) VALUES (2,11,'Eくん');
CREATE TABLE info (
id int NOT NULL,
number int NOT NULL,
info text NOT NULL,
FOREIGN KEY (id, number) REFERENCES person (id, number)
);
INSERT INTO info(id,number,info) VALUES (1,10,'Cさんの情報1');
INSERT INTO info(id,number,info) VALUES (1,10,'Cさんの情報2');
INSERT INTO info(id,number,info) VALUES (2,10,'Dくんの情報1');
INSERT INTO info(id,number,info) VALUES (2,11,'Eくんの情報1');
/* INSERT INTO info(id,number,info) VALUES (1,11,'外部キー制約でエラー'); */ >>718
神様ありがとうございます!
以下の1行をプラスして、完全に想定通りに動きました!
>>PRIMARY KEY (id, number)
CREATE TABLE info (
id int NOT NULL,
number int NOT NULL,
info text NOT NULL,
FOREIGN KEY (id, number) REFERENCES person (id, number),
PRIMARY KEY (id, number)
); すみません。動いたと思ったら微妙に違っていました。
以下の制約を付けて、正常に動きました!
ALTER TABLE info ADD CONSTRAINT info_fkey FOREIGN KEY(id, number) REFERENCES person (id, number) createuser -P -E ロール名
でパスワードを設定しても
そのパスワードを要求される場面がない。
CREATE ROLE ロール名 WITH PASSWORD '****';
でもそう。
なんのためのパスワードなんだろう?
localhostだけで使うなら無用なのかな。 pg_hba.confでtrustになってるとか? pg_hba.confの設定はいじっておらず、
md5かpeerのいずれかです。
trustは一つもありません。 peerで認証されてるんだろう
LinuxのアカウントとPgのロール名が同じで >>724
そうかもしれません。異常な挙動でなくて安心しました。
助言くださってありがとうございました。 pg_hba.confという設定ファイルの中の
local all all peer
を
local all all md5
に変更することでパスワードを指定して作成したロールから
localhostのPostgreSQLサーバに接続するときにパスワードを
要求されるようになりました。 datdbaseをCREATEする権限をグラントするコマンドを教えてちょうだい windowsなのですがまずdvdrental.tarをインポートするやり方からわからないです
教えてください >>731
ttps://dev.classmethod.jp/etc/postgresql-create-sample-database/ そのまま丸写しではできなかったですがあちこちにに書いてあることを総合したらなんとかできました
どうも pgadmin4でクエリエディタの内容をコピペする方法ないの?どうするのこれ? 職業訓練でポスグレやってるんですが、自宅でインストールして使おうとしたらコレが出たんですがどうすれば使えるようになりますか?
https://i.imgur.com/xDqFtox.jpg >>738
管理者としてインストールしました
何回か再インストールしてもダメなんです >>739
Windowsでの話?
環境何も書いてないのはエスパー求むってことか? >>741
Windowsです
サーバーソフトはtomcatを使ってます 一応聞くけどポスグレのインストールはデフォルトでエンター連打でインストールしたって理解でいいか? >サーバーソフトはtomcatを使ってます
唐突に謎すぎるw
もしかしてデータベースサーバーというものを知らない? tomcatはjavaサーバーで今の問題には
特に関係ないからいいとして、
1.postgresqlをloalhostにインストールしているか?
2.postgresqlをport5432でインストールしているか?
3.windows上のサービスとして起動しているか?
この辺教えて それ以前にこれまでしてきたことと、その結果を時系列で書いてもらわんと
誰も何も分からないと思う。 >>746
それを答えられるヤツは、あんな質問をしないやろ。w 職業訓練でそんな授業あるんか
ええな
俺も行きたいわ >>750
15年ぐらい前だけど職業訓練の一環でうちの会社に訓練生が現場実習として2週間ぐらい来たことあったのでそう言う奴かも 初心者的な事聞いていいっすか?
テーブルに時間として格納された整数値を現時刻と加算したいんだけどどうするの?
定数としては+ n hourで出来たけど、項目だとできなくて >>753
手元に環境ないから試してないけど
select CURRENT_TIME + make_interval(hours := xxx)
ではどうかな >>753
時刻を数値で扱っている時点で初心者ではない。 UNIX TIMEだろ?
それくらい誰でもするやろ。 象
オウム教が象被ってたから、日本ユーザ会が元々postgres95で使ってた亀を使ったという話。 CREATE USERとCREATE TABLEとINSERTとUPDATEとSELECTぐらいしか使わない俺が来ましたよ!
ポスグレ触りだして10年以上たってるのに・・・ DELETE使わないって全データ論理削除っすか?
と釣り針にかかってみる。 dropdb -h all -p all -d all -U all 書き込みが無いのは「何も困ることが無い程良いDB」という認識で良いか? Oracleを仕方なく仕事で使い始めたが、PostgreSQLと比べてOracleのダメさが
使えば使うほど感じるようになり、このスレには何も書けない状態。 Oracleはドライバーの更新が遅すぎて世の中の流れに全くついていけてないからなあ 高い金出せば楽できるDBMSならわかるけどOracleは金も手間もかかるからな
ライセンスのマージンが美味しいと思ってるアホなSI以外は使う理由がない なのになんで大規模なとこOracle使うんでしょうね >>773
いつの時代の話だよw
大規模ほどOracleなんて使わない >>772
>>Oracleは金も手間もかかるからな
MySQLやPostgreSQLへOracleから移行する例が少ないね
何でだろう >>775
「自分が知らない/調べられない== 少ない」と思い込みたいのかな?
ググればいくらでも出てくるし
シェアの変遷を見ればどこに移行してるかなんて明らか >>776
PostgreSQLへ移行してるって話かね
世界的にはMySQLだけど 結局RACだろ。RACがいらないならOracle使う意味はない。 ちょいと教えて欲しい。
psqlで
テーブル存在しない状態で
DROP TABLE IF EXISTS aaa;
をやると
NOTICE: table "aaa" does not exist, skipping
と表示されるけど、これを抑制するオプションとか無いかな?(´・ω・`) interval 型の列を分や秒の値にした結果をselect文で得るにはどうすればよいですか。
列1: name text型
列2: term interval型
select name, term, ??? from table1
得たい結果
期間1, 00:32:00, 32
期間2, 02:05:00, 125 EXTRACT(EPOCH FROM INTERVAL term)で秒になる 同一サーバ(PC)で、
データベース - スキーマ - テーブル
となっています。
別のデータベースのテーブルを直接参照する事は
できますか? PostgreSQLの初心者です。
バージョン11をLinuxディストロに入れました。
サーバーの起動方法がいくつかあることを知りました。
どれが正しいやり方なのか、あるいは異なる意味を持つ起動方法なのか
わかりません。
PostgreSQLをインストールしたときには
pg_ctlcluster 11 main start
という起動方法を指示されました。
PostgreSQL11のドキュメントにしたがってデータベースクラスタなるものを作成したときには、
pg_ctl -D /usr/local/pgsql/data -l <ログファイル> start
という起動方法を指示されました。
Linuxでサービスを管理をする方法として
systemctl start postgresql
service postgresql start
といったものもあります。
これらはそれぞれ違う用途による起動方法でしょうか?
それとも好きな起動方法を選択できるんでしょうか?
pg_ctlclusterがpostgresユーザー権限で操作できることは知っています。 >>790
むしろ、Linuxの初心者でもあるな?
OSも書かんと。CentOS8? >>791
返事くださってありがとうございます。Debian10です。
どの起動方法も可能ですが、
異なる起動方法によって何か挙動が異なるのか迷って
経験のある方に助言をいただきたくて。 >>792
やみくもにネットの情報を頼りにするより、ちゃんとまとまった古本でも買った方がいい。
何がなんだか自分でもわからなくなるぞ。PostgreSQLの世界はこれが普通というのがないんだから。 >>793-794
大変ありがたい助言。参考にさせていただきます。 >>792
Linuxがsystemd系ならsystemctlコマンドを使うべきだと思う。
挙動が違うかどうかは設定による。
そのへんが気になるなら、他人に聞くのではなく、自分で自分のマシンを確認するべき。
man systemd.serviceとかから?
https://qiita.com/JhonnyBravo/items/a28074c20fa9adf02be3 >>796 ありがとうございます。
その後、さらにいろいろ調べつつ試した結果、
PostgreSQLには同じ操作をするのにいくつかの異なる方法(ラッパー)が用意されていて
複雑であることが分かりました。
Linuxディストリビューションのパッケージを利用した場合、
そのディストロの流儀に第一に従うべきかもしれません。
とすると、root権限でもってsystemctlかserviceコマンドでPostgreSQLサーバを起動することになりそうですが、
PostgreSQL11のドキュメントには次のように書かれてありました。
https://www.postgresql.jp/document/11/html/server-start.html
{何を実行するにしても、サーバはPostgreSQLユーザアカウントで起動させなければなりません。
rootであってはいけませんし、他のユーザでもいけません。}
このドキュメントに従う場合、systemctlやserviceは使えなさそうです。
しかしpostgresになってpg_ctlclusterで起動したとき、
Warning: the cluster will not be running as a systemd service. Consider using systemctl
という警告メッセージが表示されるのでsystemctlを使うべきことを示唆しているように思えます。
ちなみに、pg_ctlclusterを使って起動した場合、
systemctl status postgresqlでは停止中と表示されてしまいます。
今のところ分かったのはこんなところです。
何かお気づきの点があったら助言いただけるとありがたいです。 pg_ctlclusterを使って起動した場合systemctlには反映されず、
systemctlを使って起動した場合pg_ctlclusterに反映されます。 >>797
ためしにrootでsystemctl startしてから、起動されたプロセスのユーザーをpsでちゃんと確認してみろ。
rootで実行したからって、プロセスがrootとは限らん。
サービスの多くは専用ユーザーを割り当てるのがあたりまえ。ドキュメントにあるのはその念押しみたいなもん。
詳しくは、マシンにたぶんあるサービスのユニットファイル(サービス名.service?)を探して読め。
なかったら、init.dの起動スクリプトかな?
どうやって起動するかが書いてあるから。ユーザーとかオプションとか。 >>799
おっしゃるとおりでした。ps axuで調べたらUSERがpostgresでした。 ポスグレはOSと密接だからrootユーザーが基本。
SQL Serverは管理者権限のあるローカルユーザー
Oracle DatabaseはOracle Database専用ユーザーを作って使用する 自分の知っている世界だけでものをいうやつは必ずいる。
必ずこうと言っているわけではないので、その人の主観ではおかしいことになるのは理解できる。 ポスグレに関してはrootユーザー以外なら、ポスグレ専用ユーザーを作って使う。ポスグレがOSSだと知っていれば、いろんな権限がないと不都合なので、自身があれば自由にしてくれ。 まあ、ユーザーをそんなに意識することはないけどな。
サービスが起動されるときに自動的に使用されるもんだし、ログインして使うもんではないし。 どのOSユーザーで動いているのか意識しないなんてありえないだろ いちいち意識なんかしねえわ。
最初にきっちり設定しとけよ。 >>809 みたいなのがいるから、rootユーザーを使うことになったりする。 OSSなのに他人にお膳立てしてもらうが当たり前というのはおかしすぎる。 Webプログラム上にrootという名前とパスワードを書き込んでおくのは常識 なぜマルチユーザーにしないといけないのかわかってないやつは、結局、何もかもできる便利な管理者ユーザーでやってしまう。 学習していて、継続的アーカイブとポイントインタイムリカバリがよく分からないのですが・・・・
https://www.postgresql.jp/document/12/html/continuous-archiving.html
https://youtu.be/MCgWUyKQ6YM?t=2744
リストア時に消してしまうWAL(動画でいうWAL1~3)は、なぜ消してしまって復元できるのですか?
ドキュメントの方には、
>少なくともバックアップの開始時点まで遡る、連続した一連のアーカイブ済みWALファイルが必要です。
と買いてあるにもかかわらず、WAL1~3が抜けてしまって戻せる理由のが不思議でたまりません >>819
それ資料と説明の仕方が悪いと思う。
WAL1〜3はアーカイブ(バックアップ)されているから大丈夫という意味だけど、メトロの女講師の説明がおかしくてわかりにくくなっている。
この講師の説明だとわかっている人間でないとわからないと思う。 勝手にぽすぐれって読んでたんですが、みなさんぽすとぐれすって読んでるんですか? >>820
アーカイブされたWALはどこかにあるのが前提なんですね
ありがとうございます >>821
ポスグレと呼ぶのは日本の通称
ポストグレスは英語圏の通称
ポストグレエスキューエルは、最近では無難な言い方。
ポストグレスキューエルは英語圏のださいオナニー表現で、あまり言われない。
技術者同士ならポスグレ、外国人がいる場合はポストグレス、一般人がいる場合はポストグレエスキューエル。
もともとはPostgresが製品名だから、グローバルではポストグレス。 >>824
アーカイブファイルに同じ番号をつけて説明しているから、あの動画はわかりにくい。
あの動画のメトロの女の知識があやしい。本当に理解してないのに台本を読んでいるから、あんな体たらくになっている。 >>825
ポスグレって読んでたのが自分だけかと思ったのですが、日本の通称ならまあ間違いではなかったということですね
それなら今後もポスグレでいきます ポスト+イングレスが語源なんだから、やっぱポストグレスがかっこいいでしょ! 英語ではpost-gresで2音節だけど
日本語でポストグレスというと6音節と長く
さらに「ト → グ」が発音しにくいので
ポスグレという呼びやすい略称が定着 フルマネージドで外部から使えるサービスで、一番安いのってどこですか?
素人管理はやっぱ危ない気がしてきたぜ >>830
AWSのRDS serverlessはどう?
要件わからんけど運用の手間はほとんどかからないイメージだけど。 インフラもアプリも手間がかからないように開発しないと手詰まりになる ロジカルレプリケーションで質問
pgadmin上からCREATE PUBLISHは出来たのにCREATE SUBSCRIPTIONがクエリ処理中のまま帰ってこない…これは何故?
wal_levelはパブリッシュ側、サブスク側共にlogicalにしてる
他になんか設定抜けてる?
アクセス設定は
all all 0.0.0.0/0
とかにはしてあるんだけど… 自己解決
というかアクセス設定をmd5からtrustにしないとダメなの?
んー、なんか納得いかないんだけど… 連投で申し訳ない
パブリッシュ、サブスクそれぞれの現在の状態ってどうやれば取れるの?
とあるホストで動いてるパブリッシュの一覧とか
サブスク側のサブスク一覧とか
エラーで止まってるとか、動いてるとかそういうの pg_stat_replication
pg_stat_subscription
かな。
状態確認するのならまず統計情報ビューを確認。
一覧だけならpsqlのメタコマンドにもあるみたい。 あああああ
どこ見ても関数の引数がNULLだったときの動作が書いてない
なんかNullになるっぽいことが質問サイトとかかいてあるが
確実なことがなんもわからん
ただのTO_CHAR
公式ドキュメントから
SQL標準
はてはOracleまで似た情報内科みたのに
めちゃくちゃよく起こることじゃん
なんで?どうなってんのこれ?! >>842
元々Oracle使ってた?
Oracleのnullの扱いが特殊で、nullに甘いと言うか…
気をつけた方がいいよ
特に文字列項目はnull非許容にした方が良い PGMiner 対策セキュリティとして、信頼できないユーザから pg_execute_server_program 特権を剥奪する手順を教えてください PGMinerって初耳でした。難しいことやっているんですね。
でもそもそも信頼できないユーザからは実行出来なければいいんじゃないですかね?
とはいってもそんなことは百も承知だとは思うので、もしよかったらなんでユーザ制御のみではいけないのか教えてもらえませんか?
どういうシステムか興味があるので。 pg_execute_server_programって明示的に与えない限り付与されないんだから、
管理者権限の管理と監査しかないんじゃないの。 >>841です
色んな状態をPgAdminのクエリから取得出来るのは分かったけどロジカルレプリケーション自体を管理するソフトみたいなのはないのね…
ロジカルレプリケーション管理ソフトのオススメあったら教えて
出来ればGUIでグラフィカルにこのマシンのこのDBをPUBLICATIONに設定
別のマシンのこのDBをドラッグ&ドロップでSUBSCRIPTIONに設定みたいなソフトあると嬉しい
無いなら管理ソフト作るつもりだけど…面倒なので既にあるならそっち使いたい… JDBCがExceptionでもエラーログ吐かないとかあたまおかしくないですか JDBCドライバがログ吐くの、それめっちゃウザいのでは…
それくらいアプリ側で捕捉して、アプリ側が思うようにログ吐こうぜ Windows10でグループポリシーのスタート/シャットダウンスクリプトで他PCにSQLコマンド送信しようとすると止まってしまうけやり方が悪いんかな >>851
NetCOBOLでプログラムソース引き継ぎリコンパイルか
大変だな Windowsでログを日本語にしている場合、基本Shift-JISだけどたまにUTF-8で書かれて文字化けするのどうすばなおるの?
例えばこれはUTF-8で書かれてしまう "自動VACUUM: 孤立した一時テーブル"postgres.pg_temp_3.fetchchunks"を削除します" shift-jisでログを吐くように設定すれば良いのは? japanese_japan.932に設定しててほとんどはそれで書き込まれるけどごく一部だけ文字化けしてる。試しにUTF-8で開いたらその文字化けしてた行だけは読めた pgAdmin3ってPosgreのバージョンいくつまで対応してるの?
pgAdmin4はブラウザアプリになっちゃって使い悪すぎる・・・ >>858
4が9.2からだから、その前までじゃね?
あと、PostgreSQLね PostgreSQL 13のCOPYコマンドでCSVファイルをテーブルへインポートするとき、
CSVファイルの一行あたりの値の数とテーブルの列数が同じときは
テーブルの列名を指定しないでもインポートできるじゃないですが
これなんですが、CSVファイルは1行にデータが500個あって、テーブルが501列ある、なんて場合、
列名を指定しないと「missing data for column 〇〇」なんて出てしまいますが、エラーを出させず、
テーブルの先頭500列にだけ値を入れたいって場合って、
やっぱりCOPYするときに列名を指定しないとダメですかね
同じようなことをしたいテーブルが沢山あるのですが、列数が200とか300とかそんなのばかりで
どうにか手間をかけずにできないか方法探してます COPYコマンドだけで対処する方法はないんじゃないか?
csvkitみたいの使ってCOPY FROM PROGRAMするか
カラム指定付きのCOPYコマンドを生成する簡単なスクリプトを書くかかな csvの全ての行の最後にカンマ入れればいいんじゃない? 回答どうもです
>>861
そうですか…
COPYコマンド作成スクリプト、かなぁ
>>862
たしかにそれもよさそうですね
やり方考えてみます Pgadmin4 で外部プログラムを呼び出したり
プラグインを追加したりってどうやったらできますでしょうか。 すいません。教えてください。
Win10にPostgresqlを何度かインストールしているのですが、psqlに”そのパスワードしらね”って言われてしまいます。
此方を参考にしてみたんですが、pgpass.confが見つかりませんでした。
他に何かインストール時に気を付ける事は有りますか?? PostgreSQL 10 で判らないことあるんだけど、教えてクレメンス・・・m(_ _)m
バージョン10.16(Ubuntu18.04 LTSの aptコマンドで入れられる最新?)でDBの操作は全部phppgadmin入れてブラウザからやってる.
で、phppgadminで「SQL」ってリンクがあってそれを使ってSQL実行するとエラーになる。
phppgadmin使うのが悪いのか、phppgadminで書いてるSQLが悪いのか、ほかに理由があるのか、素人なのでわからんのです。
tagIndexっていうテーブルを作って、booleanでoutputflag ってのを定義しておいて、
UPDATE public."tagIndex" SET outputflag='f
で「tagIndexっていうテーブルがない」(relation "public.tagIndex" dose not exist)って怒られる。
C#のNpgSQLつかってupdate文でそのテーブルの更新はできてる。
phppgadminで中身弄ろうとしてうまくいかない。
エラーになってるSQLが、SET句でエラーになるなら 'f' じゃなくて false と書けばいいんじゃね?とか想像つくけどテーブルが無いといわれるとお手上げっす・・・orz 自己解決。
update "public"."tagIndex" SET outputflag=true;
で行けた。
public."テーブル名” と "public"."テーブル名" っていう、スキーマも "" でくくってるかどうかの違いだけ・・・?
83.とか9.2の頃はこんなことやらなくてもよかったような覚えがあるから「面倒になったなー」ってのが正直な感想でした・・・ > UPDATE public."tagIndex" SET outputflag='f';
PostgreSQL 11.10でも別にエラーにならないみたいよ
ttps://extendsclass.com/postgresql/4f05be9 PostgreSQLでのテーブルの列数の上限は1,600列までですが、
私のデータでは5,000列のテーブルが必要です。
先ほどCREATE TABLEをしようとしたらエラーが出ました。
列数が3列のときは正常にテーブルが作成できます。
多分、1,000列ずつに分割して、あとで結合するのだと思いますが、
その参考となるサイトをご存じないでしょうか?
検索してもまったく見つかりません。 >>871
共通のPrimary Key + 他の列で分割すればいいだけ
まあ5,000列はRDBで扱うのに適さないから
リファクタリングするか目的に適した別の仕組みを使ったほうがいいぞ >>872
ありがとうございます。
そのサイトは質問前に読んでいましたが、具体的にイメージできなかったです。
一人目の回答者の勧めるソースコードの変更は、
不具合が出るリスクがある上に、会社の他の人たちにも使ってもらうので難しいです。
二人目の回答者は、複数のテーブルに保存し、Viewを使ってデータを提供する方法を勧めているようです。
ただ、Viewもテーブルと同様の列数の制限がある、と書いてあるので
「結局、できるの?できないの?どっちなの?」という感じです・・・。
ちなみに、ユーザーはGUIで操作するだけで、クエリーはそれに基づいてプログラム内で生成するので、
ややこしいクエリーになっても対応できます。
三人目の回答者は、
1. 1,600列無くてもいいように再設計する
→できるならそうしたいですが、方法が分かりません
2. 超過した列にはJSON/JSONBフィールドを使う
→JSONは分かりますが、どんな技なのか分かりません
3. スプレッドシートのようなテーブルにする
→これは、spreadsheet_tableが親でspreadsheet_cellが子みたいになっていて、
spreadsheet_cell一つにつき一つのデータが入るようになっていますか?
(行、列)を(1, 1), (1, 2), (1, 3), …と変えていくことでセルの位置を指定できるみたいですね。
ただ、検索などは非常に遅そうですね…。 >>873
ありがとうございます。
> 共通のPrimary Key + 他の列で分割すればいいだけ
具体的にはどうなりますか?
私の場合を説明しますと、
データ列が始まるまでに5列ほど属性がありまして
そのうちの最初の2列がPrimary Keyです。
一枚岩だとこんな感じです:
Lot (PK), Number (PK), X, Y, Z, Data0001, Data0002, ... Data5000
これを
Lot (PK), Number (PK), X, Y, Z, Data0001, Data0002, ... Data5000
Lot (PK), Number (PK), X, Y, Z, Data1001, Data1002, ... Data2000
Lot (PK), Number (PK), X, Y, Z, Data2001, Data2002, ... Data3000
Lot (PK), Number (PK), X, Y, Z, Data3001, Data3002, ... Data4000
Lot (PK), Number (PK), X, Y, Z, Data4001, Data4002, ... Data5000
…に分ける感じですか?
ただ、これだとX, Y, Zが無駄に被るので正規化して
Lot (PK), Number (PK), X, Y, Z
だけのテーブルを作り、
Lot (PK), Number (PK), Data0001, Data0002, ... Data5000
Lot (PK), Number (PK), Data1001, Data1002, ... Data2000
Lot (PK), Number (PK), Data2001, Data2002, ... Data3000
Lot (PK), Number (PK), Data3001, Data3002, ... Data4000
Lot (PK), Number (PK), Data4001, Data4002, ... Data5000
…にする感じでしょうか? >>875
それよほど特殊な事情がない限りRDB的には列持ちじゃなく行持ちにするケースだと思う
親テーブル: Lot (PK), Number (PK), X, Y, Z
子テーブル: Lot (PK), Number (PK), Data_No (PK), Data
この形だと親テーブルのレコード1件に対し子テーブルのレコードが5000件
特殊事情があるなら
そういう同じ種類のデータの繰り返しはArray Type使う
https://www.postgresql.org/docs/13/arrays.html >>871
これは余計なお世話だけど、どの設計がよいかを単体で検証すると思うんだが、
将来的にデータ量や参照量や更新量が増えた場合の速度低下(レスポンス)や、
データ構造(列数とかデータ型)が変わったときの保守に要する時間(ダウンタイム)も考慮して
比較したほうがいいぞ。大量の実データがなくてもダミーデータを生成して。 >>877
>将来的にデータ量や参照量や更新量が増えた場合
そういう用途だとは思えないけどな >>876
ありがとうございます。
>親テーブル: Lot (PK), Number (PK), X, Y, Z
>子テーブル: Lot (PK), Number (PK), Data_No (PK), Data
>
>この形だと親テーブルのレコード1件に対し子テーブルのレコードが5000件
はい、エラーが回避できるならその形式でもいいです。
ただ、行も10万件/1製品ぐらいあります。
この場合、1製品分の全データだと
親テーブルのレコードが100,000件
子テーブルのレコードが5,000件*100,000件=500,000,000件 (5億件)
…になります。
しかも、こういうデータが数十製品あります。
これは特殊な事情に該当しますでしょうか?
ちなみに、データ部分は同じ種類のデータの繰り返し(すべてfloat)ではあります。
上記を踏まえますと、Array Typeの方が近道そうでしょうか?
すみません、DBはド素人ですので…。 >>877
ありがとうございます。
仰る通り、実行速度や保守性も考慮したいです。
5,000列というのは平均値で、増える傾向にありますが、今後も10,000列は超えないと予想されています。
データ自体は一度読み込んだら更新は必要ありませんが、計算結果はDBに残したいです。
新規製品のテーブル追加は大量に発生します。
大量の実データは既にあります。 >>878
きっと、私の実力的に無理という話ですよね。
DBはド素人で、このデータ量でどのぐらいの速度で動作するのか不明なので、
まずは動作するものを実装したいです。 >>879
そういう用途に該当するかどうか、軽く説明しておきます。
1製品のデータ量は
100,000行
10,000列
が上限とします。
しかし、そんなデータが数十製品×数十ロットあります。
参照量はユーザー数が増えると増えますが、
ユーザー数は多くて300人程度、
同時に使用するのは多くて10〜20人程度と考えます。
(計算結果をDBに残さずに、Excel形式で残す方式であれば)
更新量をゼロにできます。 それだけの規模は、まったくの初心者がやるもんでもなさそうな。
失敗上等な状況ならええけど。
ほかに頼んだほうがええんちゃうかなー。。。 >>880
どういう構造にするのがいいかはデータ量やデータ型以外にそのデータをどう利用するのかに強く依存してる
特殊事情ってのは行持ちだとどうしても困る、求められる要件を実現できないという事情
その判断自体が難しいようなら
性能面の検証も含めてDB設計してくれるところに依頼するか
自分で色んなやり方を試して検証してみるかになるよ 読み取り専用で特定のデータ列だけ欲しいとか
特定のデータ列がある範囲にあるものが欲しいとかそういうクエリがなくて
データ列は常に全部一括で取得して計算処理する前提なら列持ち(横持ち)を軸に考えてもいいと思うよ
その場合は自分ならまずArrayを試す
(RDB前提でかつPostgres前提の場合に限るけど) 時系列の生の実測データだとは思ってたけど
それ300人で使うってなんかすごいね
サマったデータだけ使えればいいような気がするんだけど
300人が違う角度で生データから統計処理とかしたい感じなのかな? >>884-885
お二人ともありがとうございます。
そうですね、まったくの初心者にしては規模が大きいですよね。
お陰様で、いくつか選択肢が見えてきたので、まずは自分で試してみます。
Array Typeが条件(同じ種類のデータの繰り返し)に合ってそうなので、まずはそれを実装してみます。
行持ちも出来るならやってみて実行速度などを比較できるといいですね。 >>886
ありがとうございます。
はい、全部一括で計算処理する前提です。
すみません、列持ち(横持ち)というのは、私が>>875で書いた、
Lot (PK), Number (PK), X, Y, Z
だけのテーブルを作り、
Lot (PK), Number (PK), Data0001, Data0002, ... Data5000
Lot (PK), Number (PK), Data1001, Data1002, ... Data2000
Lot (PK), Number (PK), Data2001, Data2002, ... Data3000
Lot (PK), Number (PK), Data3001, Data3002, ... Data4000
Lot (PK), Number (PK), Data4001, Data4002, ... Data5000
…のような感じでしょうか?
Arrayが良さそうなんですね。
環境は RDB かつ Postgres ですのでOKです。
では、やはりまずはArrayから試してみます。 >>887
はい、その通りです。
基本の統計情報は全部一括ですが、
測定項目同士の相関などは各人が個別に見る感じです。 Lot,Number毎に扱うのであれば、
Lot (PK), Number (PK), X, Y, Z, data
ってテーブルにして、データをJSONとか扱いやすいテキストにしてdataカラムにぶちこんでおくってのも楽かもよ 列の変更があったらALTER TABLEなん?
死にそう。w 1つのテーブルがそんなに大きいなんて、やりたいことは単純かもしれないけど、運用は上級じゃない?
300人もいるなら他に誰か適任者いないの? 悲惨な未来しか見えない。。
そもそも新人だって言うなら、クリティカルな業務ではないのだろうけど。 Azureでデータベース間通信するには
Azureサービスに対してアクセス全開放しないとできないと言われとても困ってる
Awsも同じなんだろうか
同じデータベースに違うソースのまぜるってやりたくないな PG-Stromって実際お幾ら万円なんですか?
何万円なのか、何十万円なのか、何百万円なのか、オーダーだけでも知りたい pdadmin自体は関係ないけど
server modeで使っててweb serverでlog4j使ってるなら対策必要 >>897
PostgreSQL無関係
基本的にJavaのセキュリティホール ワイ、ブラウザ(chrome)使ってpgadminいじってるって事は、Apache使ってるんじゃ?とか思ったんだが、そーでもないのか。 pgAdminそのものの内部はWebブラウザだけどな。 初心者です。
hinemos の環境移行をしようと、DBのdump で過去Data移行できないか試しています。
DB のdump は下記コマンドで吸い出しました。
./pg_dump -h localhost -U hinemos -p 24001 > /tmp/hinemos.sql
リストアコマンドが判りません、そうすれば入りますか?
./psql -h localhost -p 24001 -U hinemos -f /tmp/hinemos.sql
これだと、「ERROR:」がいっぱい出ます。 >これだと、「ERROR:」がいっぱい出ます。
多分既にテーブルがある状態でリストアしようとしてエラーがでていると予想
もしそうなら↓のどっちかで対応できると思う
・dbを空に(一度dropして再度作成)してリストアを実行
・ダンプ時に-cをつける(バージョンによっては--if-existsもつける)
pg_dump -h localhost -U hinemos -p 24001 --if-exists -c > /tmp/hinemos.sql function内からprocedure呼び出せる? 質問なのですが
インデックスがある一時テーブルにselectかけるとき
ヒント区index scanを指定しても
いくらやっても適用されず
実行計画を見てもbitmap index scanになってしまいます。
どなたかこの問題に心当たりのある方いらっしゃいませんか?
posgre側がこっちの方が早いからと判断してやってるのかかと思ったのですが、bitmapの方が遅いんですよね… >>909
まずはEXPLAIN ANALYZE <query> でestimated rowsとactual rowsの差を確認
次にANALYZE <table>を実行してからEXPLAIN ANALYZEして差が出るかどうかを確認 >>910
確認してからまた対応が違うってことかな?
もうちょい噛み砕いてけろぉ、おじさんsql詳しくナインだよ >>911
SQL関係ない。
実行計画を判断する元になる情報が実態とあってるかを確認しろって909は言ってる。
一時テーブルはautovacuum 対象外だからそのセッション内でanalyzeする必要あるはず。 ロールの権限について学習したいので教えてください
https://www.postgresql.jp/document/13/html/sql-grant.html
データベースオブジェクト間で包含関係にあるものの権限や、デフォルトの権限についてよくわかりません
あるロールにデータベースに権限を与えた場合、中のテーブル等にも権限を与えたことにはなるのですか?
逆に、テーブルのみに権限を与えた場合、データベースのアクセス権限は自動的に与えられるのですか? >>913
データベース単位の権限なんてまず使わないと思うぞ。アクセスできるかできないかくらいの制御程度しかできない。
そんな粒度では意味がないし。
テーブル単位の権限付与が面倒だから、特定の権限をまとめたロールを作って、ロールで権限を付与する。 win10 pro postgresql11について質問させてください。
postgresqlのサービスを止めることなく、w10標準のバックアップツールで\dataをフォルダごとnasにバックアップして問題ないでしょうか? 例えば↓みたいになったとしたら
バックアップツールがファイルAをコピー
バックアップツールがファイルBをコピー
DBがファイルAとCにデータを書き込む
バックアップツールがファイルCをコピー
コピー先のファイルAはDBがデータを書き込む前の内容で、ファイルCはDBがデータを書き込んだ後の内容になるので困ると思う
25.2. ファイルシステムレベルのバックアップ
https://www.postgresql.jp/document/11/html/backup-file.html ありがとうございます。サービスを止めてからバックアップすることにします。 https://www.postgresql.jp/document/11/html/app-pgdump.html
> pg_dumpはPostgreSQLデータベースをバックアップするユーティリティです。 データベースを使用中であっても一貫性のあるバックアップを作成することができます。 pg_dumpは他のユーザによるデータベースへのアクセス(読み書き)をブロックしません。 pg_basebackup使えば稼働中でもデータディレクトリまるごとバックアップできる。
ただし対象サーバーがレプリケーションのマスターとして動作できるように設定しておく必要あり。 教えてください。
ECPGからPostgresqlのストアドを呼び出し、結果をchar型の配列で受け取りたいのですがうまくいかなくて…
そもそも出来るのでしょうか? >>924
PRO*CのPostgresql版みたいな奴です。 そもそもストアドで配列で値返せるのか?
ファンクションになるんじゃ無いの? Cとの型変換が必要かどうかで違いがあるんじゃないの?
charじゃなく”char”ならOKとか Postgresの文字列型はtext型とみなす仕様が根底にある。
同じ文字データ型でもキャストがうまくいかないのがはまるところ。 >>931
ありがとうございます!
今まで色々やってみてまだ出来ていないです…
明日やってみます! >>932、933、934、935
ありがとうございます!
明日も色々やってみます。 やっぱりECPGの実行体起動すると以下で落ちちゃいますね…
[malformed array literal: "" on line 53][-400] zip版ダウンロードしたら、pgAdmin4のフォルダ名が長すぎて解凍失敗するわ。
こないだまで解凍出来たのに。
インストーラー使ってインストールしたらアンインストール中にエラーになるわ。
255文字制限解除しないと使えないのが普通だっけ? >>939
プラットフォーム名が書かれていないし、「255文字制限解除」が何か分からないので外すかもしれんが、
インストール先のファイルシステムはサポートされているもの?
仮にWindowsとした場合、FATやFAT32はサポートされていない。
それから、これは未確認だけど、もし新しいZIP64フォーマットが採用されてるなら、対応するアーカイバを使うとか。
パーミッション、あるいは空き容量が不足していて伸長が正しくできない可能性は? zip解凍できないのはpostgre以前にOSの問題だね。 問題ではなく、仕様やろ。
C:¥ルートにでも展開すりゃええんちゃうの? 少しお聞きしたいのですが
現在社内にある旧商品管理鯖(引退済み)のマシンを引っ張り出してきたのですが
PostgreSQLのVerが7.3.10でした。
この状態からpg_dumpallでデータを取り出すことは出来たのですが、
別のサーバにPostgreSQLのVer12をインストールして、
イカのコマンドを打ったところ、
psql -U postgres -f /backup.db > update.log
画像の様な状態になってどうしたものかと考えております。
エラーでキーが重複してることや、
multiple primary keys for table are not allowedのように
複数の主キーは許可されていませんと出てきているのですが、
これは、SQLのバージョンを一気に上げすぎているからなのでしょうか?
それとも、データベース自体が壊れている可能性があるのでしょうか?
(過去に鯖の半クラッシュが何度かあった模様)
よろしくお願いします。
https://i.imgur.com/daRuFqr.jpg
https://i.imgur.com/pCXROZr.jpg 自分なら、その方法がサポートされているか(バージョン間、手順)を調べて、
サポートされているようならログを見て起こっている問題・原因を把握したうえで対策を考える。 duplicate key value violates unique constraintとかあるようだけど、DBに既にテーブルがあったりしない? 初心者ですみません。既存TBLにカラム追加してレングス変わると影響大きいですか?当初TBL設計時にFILLER積んだほうが良いのでしょうか? 仕事で使ってるけど必要になったらカラムどんどん追加してるよ そんなのプログラムの作りによるんじゃないの
DBに依存しまくってると苦労する >>946
メインフレームのファイルのようなものじゃなくて、データファイルの内部は頻繁にデータの位置を変えている。
そんな古風な仕組みではない。 外部キー制約を一時的に変更するにはどうすればいいでしょうか?
通常は、ON UPDATE RESTRICT で、一時的に ON UPDATE CASCADE にしてクエリ実行後に RESTRICT に戻すにはどうすればいいのでしょうか?
ADD CONSTRAINT と DROP CONSTRAINT の方法は分かるのですが・・・ ALTER TABLEのALTER CONSTRAINTではできないのでDROP/ADDする
ALTER TABLE <table_name>
DROP CONSTRAINT <fk_name>,
ADD CONSTRAINT <fk_name> FOREGIN KEY … ON UPDATE CASCADE; 物理外部キーを作るくらいなら、論理外部キーとしておいた方が楽。
ガチガチにしておいても、エラーハンドリングの実装がなければ意味がない。 update on conflictを使いまくってるとシーケンス値が上がりまくって、primary keyのidの値が飛びまくるんだけど
気にしたら負けかな。
もちろん綺麗に1 2 3とならない事は認識してるけど、1 1235 5493 29849 みたいに膨大な数飛びまくると…。
99%がupdateの場合なんだけど、update returningして件だったらinsertにした方がいいのかな
その場合ロックとか考えなきゃいけないのが大変なんだけど、もう避けられないのかな insert on conflict do update(いわゆるupsert)のことだよね?
conflictの条件をprimary keyにできないならPKのシーケンスが飛びまくるのはしょうがないと思う
ただ99%がupdateならupdateしてからinsertのほうが性能は良くなるような気がする
ロックを考えなきゃいけないというのはよくわからない
今も同じじゃない? 言いたいのはロックじゃなくてトランザクションじゃないかな >>957-958
ありがとうございます。
on conflict do updateであれば、トランザクション貼らずともコマンドを実行するだけで確実にinsertかupdateが確定で成功するけど
update → insertだと両方updateが0件になって両方insertしようとして片方がエラー という事が起きるかなと認識していました update → insert on conflict do updateをトランザクションでくくれば今と同じなんじゃないかな
ただREAD COMMITEDならlost updateが発生してるだろうから
本当にそれが望ましいのかよく考えたほうがいいと思う insert into 〜 on conflict do updateでシーケンス値が増えるのが我慢できなくて
insert into 〜 on conflict do update相当の処理をトランザクションで書いているのですが
これって最終的にテーブルに対してACCESS exclusiveロック(selectすら妨害する最強ロック)をかける事が必須だったりしますか?
上記のクエリと同じ処理を行いたい場合、以下の処理を行う必要があると思います
・select文で該当の行が既にあるかをチェック
・select文の結果を見て、該当の行があればupdate
・select文の結果を見て、該当の行が無ければinsert
トランザクション1と2が両方同じタイミングでselect文を発行して、どっちもresultが0だった場合、どっちもinsertをしようとしてしまう。
だからどちらか片方のselect文は、他のinsertが終わるまで待ってから行って、result 1を取得する必要がある。
最初は行ロックでいいかな?と思ったのですが、最初にselectをした段階で対象の行は「存在しない」ので行ロックがかけれません。
となると、対象のテーブルに一番強い権限のACCESS exclusiveロックをかける必要がある?と思います。
ですが、それだとdo updateとは無関係のただのselect文に対してもロックがかかってしまいます。
この一連のdo update〜の処理でだけ排他ロックをかけたいのですが、そんな事出来るのでしょうか? 違った。
SHARE UPDATE exclusiveモードを使えばよかったのか
失礼しました 同じ話題を引っ張り続けて申し訳ないけど、自分でinsert〜on conflict do update(upsert)相当の事をするのが面倒すぎて、趣味ですら面倒で手が止まる。
仕事じゃ絶対提案出来ないな(ダルすぎて)
自分の場合は実際には1000件単位のデータをupsertしてるんだけど、この数だと1件づつselect→(update or insert)は遅すぎる。
select文で1000件のデータのユニークキーに対して長いwhere 文を作る。
( SELECT id,key FROM tbl WHERE key in ( $1 , $2 , $3 .... , $1000) )
select文の結果を入れたい1000件単位のデータと比較して、1件づつinsertするかupdateするかを判定する
insert、updateも1件づつやるとトランザクションしても遅いから1リクエストで済むように動的にクエリ文を作る。
( INSERT INTO tbl (key) VALUES ($1),($2)... )
( UPDATE tbl SET key=c.key FROM( VALUES ( ($1,$2),($3,$4),...) AS c(id,key) WHERE tbl.id=c.id )
そしてupsertから加えた機能で、含まれてないデータをDELETEもするようにしてるからさらにクエリ文が増える。
SQL文の文字列をプログラムから動的に作るんじゃなくて、
O/Rマッパーというのを使ってもっと構造的に出来るようにするべきなんだろうか…。
ちなみにnode.jsです。 その1000件とかの入力データに同じユニークキーを対象としたデータがあった場合にどうしたいの?
何か累積値や合計値を計算してて必ずカウントアップしていかないといけないとか
入力データ内の順序で後のデータを正として先のデータは捨てられてもいいとか
>>962
>SHARE UPDATE exclusiveモードを使えばよかったのか
これだとテーブルロックになるので1つのトランザクションが終了するまで次のトランザクションは待つことになる
これで十分なユースケースならそもそも同じキーに対して同時にinsertが実行される心配しなくてもいいよね?分離レベルをSerializableにすれば該当キーがロックされるだけで済むはず ごめんなさい、SQLクエリについてはSHARE UPDATE exclusiveのロックを取得する。で何の問題もありません。
自分が今悩んでいるのは、SQL文が動的になって書くのが大変という事です。
1000件あるデータ以下のような1回のinsert文で全ての値を登録するなどの事をしています。
insert into tbl (key1,key2,key3) values(1,2,3),(4,5,6),(7,8,9);
nodejsの場合、プログラムの中からSQLを実行する時は以下のような書き方をするのですが
query(`insert into tbl(key)values($1)`,[1]);
これが可変になると、以下のような書き方になってものすごく読みにくく感じます。実際はパラメーター複数あってさらに複雑ですし。
query(`insert into tbl(key)values ${insertDatas.map((v,i)=>`($${i+1})`).join(",")}`,insertDatas);
もちろんプログラムとしては全く難しくないのですが、素直に言ってダルい。$が連続しているのも読みにくさが増す理由になってる。
なので、こういう場合はO/Rマッパーというものを使えば
文字列操作ではなく見やすい書き方になったり
1回頑張って作れば他のテーブルに横展開出来るから楽なのかな?という趣旨でした。
言語化するとposgresqlのスレで言う事じゃない気もして、申し訳ない。 ORMじゃなくてもbulk insert用のSQLを生成/フォーマットする機能のあるライブラリを選べばいいよ
>query(`insert into tbl(key)values ${insertDatas.map((v,i)=>`($${i+1})`).join(",")}`,insertDatas);
string interpolationに入れた場合に適切にエスケープしてくれるのかどうかちょっと怪しくない? ストアドファンクションでINSERTしたレコードを取得するにはどうすればいいでしょうか?
INSERTは下記のクエリで行っています。
RETURNS VOID になっている所を、RETURNS TABLEにしてレコードを取得したいのですが、具体的なソースコードが思いつきません。
https://ideone.com/5JPpQ4 >>968
解決した方法も書いておけよ。そうすることでQ&Aが成り立つし、次に困ったときに返信があることが期待できるようになるんだぞ。 RETURNINGやろ
それ以外で自決してたら知らん 解決した方法は下記です。
RETURNS TABLE - RETURN QUERY です。
https://ideone.com/kgQo96
もっといい方法もあると思いますが、自分では思い付きませんでした。 初心者はわかっている値を再度、SELECTしたりするよな。 すみません。
どこが悪いのでしょうか。
RETURN QUERY SELECT については、
使用時はプログラムで INSERTINCIDENT() に引数(incident_name, full_text, registered_by) を与えて呼び出し、
プログラムで与えた引数の値と、INSERT された値が一致するかどうかを比較する必要があるので、意図して SELECT しています。 ネタじゃなければ、確認することをくっつけて実行するのは素人だと思ってください。
そもそもincident_nameとfull_textが引数になってないでしょうに。 '件名',
'本文本文本文',
公表しているコードだとリテラル値を使っているだけなので、いきなり脳内情報を書き込まれてもわかりません。 >公表しているコードだとリテラル値を使っているだけなので、いきなり脳内情報を書き込まれてもわかりません。
すみません。引数をつけて書き直しました。
https://ideone.com/6Ufeev
>ネタじゃなければ、確認することをくっつけて実行するのは素人だと思ってください。
この件が、ソースコードのどの部分にあたるのか理解出来ていません。
おかしな理解のまま進みたくないので、教えて頂けないでしょうか。 グルグル回ってるな。
INSERTしたレコードの列値がすべてわかっているのに、そのレコードをSELECTするのはPostgreSQLを信用していないということなのか? idがストアドの中で採番されるからそれを取りたいんだろ。タイムスタンプなんかも。 SELECT文のFROM句にINSERTしてSELECTするファンクションを置きたい理由がわからない。
手続きをファンクションとして隠蔽したいんだろう。
idの最大値の求め方も同時実行の考慮なしだし、INSERTが想定通りだったか、自分で確認するらしいし、もはや目的がわからない。 >>984
>idの最大値の求め方も同時実行の考慮なしだし
SERIALIZABLEかもしれないよ INSERTが想定通りだったかSELECTで確認する
さらにそのSELECTが想定通りだったか・・・・詰み INSERT 時に採番される ID とタイムスタンプを取得したいので、ストアドプロシージャではなくストアドファンクションにしました。
ファンクションではトランザクションが使えないので、 serializable にする事で妥協しました。
全てのクエリが、ファンクションを呼び出すプログラム側 ( Npgsql ) の NpgsqlTransaction を使用するので、
プログラム側で IsolationLevel に Serializable を設定しています。
・ファンクションでトランザクションを使う方法
・ストアドプロシージャで戻り値を戻す方法
のいずれかが分かれば serializable 以外に出来るのですが、どうするべきなのかがよく分かりませんでした。 >>988
ネタじゃなく、知識がない状態で突貫でやらざるを得ない状態になっているのです・・・。 ストアドプロシージャにはOUTパラメータというものがあるんだよ Windowsの15.3をインストールしたけどpgadminが動かないね
海外の掲示板では15.2に戻せって言ってるっぽい
原因がPython側にあって修正する時間がないって回答きてるっぽいからしばらくバージョンアップ無理かな
やっぱネイティブじゃないとこんな事になっちゃうね どんな製品でも最新バージョンは様子見しておくもんなんだよ PostgreSQLは最新の15.3をインストール
添付のpgAdmin7.4はインストールしない
別途古いpgAdmin7.3をインストール
これでいけた Pgadmin4自体のデバッグログを出すにはどうしたら良いのでしょうか?
ググると「DBにxxの拡張を入れて〜」とかあるけど、そうじゃなくてpgadmin4のプログラム自体のログが見たいです。
AWSのrdsにssm経由で繋ごうとして、
psqlコマンドではpgpass.conf ファイルに設定したパスワードも読み込んで何も問題なく接続出来るんだけど、
psql -h localhost -p 57851 -U postgres -d postgres
pgadmin4ではconnection timeout expiredしか表示されなくて何も手がかりがなくて困ってます。
素のpsqlで繋がらないなら、DB側の設定やAWSのセキュリティグループを見るとかやりようはあるのでしょうが、pgadminだけで繋がらない状態です >>995
ありがとうございます。まさにここでした。
そしてログレベルを上げても接続エラーの詳細なログは出なくて
結局バックエンドのpythonにログを追加してデバッグして
最終的に接続できない理由はlocalhostと書いてあるからで127.0.0.1と書いたら繋がりました。 このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 2658日 17時間 26分 57秒 5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php レス数が1000を超えています。これ以上書き込みはできません。