タグ付けされた質問 「postgresql」

PostgreSQLのすべてのバージョン。そのコンテキストが重要な場合は、postgresql-11などのバージョン固有のタグを追加します。


2
大量トランザクションおよびデータウェアハウジング用のPostgreSQL
PostgreSQLは非常に新しいので、これを使用して大規模な展開を行ったことはありません。しかし、私はエンタープライズソリューションの経験が豊富で、PostgreSQLを使用して学んだことの一部を試して適用したいと思っています。 大量のデータとトラフィックを処理できるサイズのサイトがあります。インフラストラクチャは、EC2インスタンスとEBSボリュームを使用してAmazon(AWS)で構築されます。 設計には、分析とレポートを処理するための2つのデータベース、メイントランザクションデータベースとデータウェアハウスが必要です。 メインのトランザクションデータベース ライブWebサイトに使用されます。サイトは複数のノードで構築され、同時ユーザーをスケールアップします。このケースでは、主にデータベースの読み取り操作が非常に高速であることが必要です。100GBを超えるデータで年間30%の成長が見込まれます。この時点で、2つのEC2サーバーを使用する予定です(必要に応じて後で追加します)。 私の質問、上記の要件の推奨設定は何ですか?さらに、テーブルとボリュームのパーティション分割を管理する方法はありますか?AWSセットアップの使用に関する推奨事項はありますか? データウェアハウスデータベース 主に、時間ディメンションでメインのトランザクションデータベースからすべてのデータをキャプチャするために使用されます。そのため、メインデータベースから削除されたレコードでもDWHにキャプチャされます。したがって、データは非常に大きくなり、成長はさらに大きくなります。必要に応じて、EC2インスタンスのカップル以上も使用します。 この場合の推奨設定は何ですか?定数書き込み(ETL)のため、高速書き込み操作が必要になります。PostgreSQLでOLAPキューブを構築できますか?はいの場合、誰かが試してみましたか? データベースに接続する Webサーバーはメインデータベースに接続してクエリと書き込みを行います。現在、接続にネイティブライブラリを使用するdjangoを使用するアプリケーションを開発しています。同じ基本的な方法を使用することをお勧めしますか?または、pgpoolを設定する必要がありますか? データウェアハウス(ETL) メインから読み取り、データウェアハウスに読み込むETLプロセスを構築するための推奨される方法は何ですか?ツールはありますか?従うべき方法論?PostgreSQLはETLプロセスの構築に役立つ機能/ツールを提供していますか?

2
ロードバランサーと接続プールの違い—違いはありますか?
私は、ローンチ後すぐに数百万のユーザーにサービスを提供することが期待されるプロジェクトに取り組んでいます。データベースはpostgresであり、現時点では少なくとも2台のサーバーが必要であると想定しています。システム管理者(明らかにスケーラブルなシステムに精通している)は、Webサーバーとデータベースサーバーの間にロードバランサーを配置することを提案しています。 私の質問は、負荷分散と接続プールの違いについてです。パフォーマンスを維持するために、どちらか、または両方を見る必要がありますか?
11 postgresql 

5
SQLiteからPostgreSQLに移行するためのツール
ロックされています。この質問とその回答はロックされています。なぜなら、質問はトピックから外れていますが、歴史的に重要だからです。現在、新しい回答や相互作用を受け入れていません。 SQLiteからPostgreSQLに継続的に移行する必要があります。継続的に、私は毎日SQLiteデータベースをPostgreSQLに再インポートすることを意味します。手動でPostgreSQLデータベースに変更を加える必要なく、SQLiteのテーブルに変更を加えることができれば素晴らしいと思います。私はPythonから移行を実行しますが、コマンドラインから制御できる任意の外部ツールを使用できます。ツールはLinuxで使用できる必要があり、Windowsでも実行できると便利です。

3
魔法のコラム「名前」はどこから来たのですか?
私は偶然これを手に入れました: db=> select name from site; ERROR: column "name" does not exist LINE 1: select name from site; ^ db=> select site.name from site; name --------------- (1,mysitename) (1 row) 2番目のクエリは、行全体を含むタプルを返します。postgres 9.0.1を使用します。 編集:リクエストによるサイトの定義。私は本当に問題ではありません、この癖はどのテーブルでも機能します。 db=> \d site Table "public.site" Column | Type | Modifiers --------+---------+--------------------------------------------------- id | integer | not null default …

1
PostgreSQLのBLOBまたは参照
Ubuntuサーバーで実行されるPostgreSQLデータベースにバイナリデータファイルを保存する必要があります。最初は、それぞれ約250kbのファイルが数十個あります。ただし、ファイルの数は時間とともに増加します。他のダウンストリーム分析のために、ファイルからデータを抽出する必要がある場合があります。 バイナリデータをBLOBまたは参照として保存するという昔からの疑問について、いくつかの調査を行いました。どちらも明らかに長所と短所があります。PostgreSQLに関して知っておくべき特定の問題はありますか?PostgreSQL関数または外部Pythonプログラムのいずれかを使用してファイルからデータを抽出する場合、どちらの方法が望ましいですか? データファイルをデータベースに直接格納する場合、他のすべてのフィールドを含むテーブルではなく、「メイン」テーブルを参照する外部キーを含む別のテーブルにデータファイルを格納する方が良いでしょうか? ここで質問と回答を読みました。そこでのコメントは、Linuxでの(ファイルシステムでの)参照によるバイナリファイルの保存の方が良いことを示唆しています。ここでの質問は、特にPostgreSQLと、さまざまな分析のためにファイルからデータを抽出することに関するものです。 更新:同様の質問。
11 postgresql 

2
PostgreSQLにおけるUniProtの生物学的シーケンス
UniProtの生物学的シーケンスをPostreSQLに保存する最良の方法は何ですか? データ詳細 UniProtから1200万のシーケンスを取得します。この数は3〜10か月ごとに倍増する可能性があります。 シーケンスの長さは100から500億文字までさまざまです シーケンスの1%未満が1万文字を超える 長いシーケンスを個別に保存するとパフォーマンスが向上しますか? シーケンスは、タンパク質またはDNAアルファベットのいずれかです。 DNAアルファベットは5文字(A、T、C、G、または-)です。 プロテインアルファベットは約30文字です。 2つの異なるアルファベットのシーケンスを別の列または別のテーブルに格納してもかまいません。それは役に立ちますか? データアクセスの詳細 エレミヤ・ペシュカのコメントに答えるには: タンパク質とDNAシーケンスは異なる時間にアクセスされます シーケンス内を検索する必要はありません(それはdbの外で行われます) 一度に1つの行にアクセスするか、IDによって行のセットを引き出します。行をスキャンする必要はありません。すべてのシーケンスは他のテーブルによって参照されます-いくつかの生物学的および時系列的に意味のある階層がデータベースに存在します。 後方互換性 次のハッシュ関数(SEGUID-SEquence Globally Unique IDentifier)をシーケンスに適用し続けることができれば、すばらしいでしょう。 CREATE OR REPLACE FUNCTION gfam.get_seguid(p_sequence character varying) RETURNS character varying AS $BODY$ declare result varchar := null; x integer; begin select encode(gfam.digest(p_sequence, 'sha1'), 'base64') into result; x := length(result); if …
11 postgresql 

1
トリガーを使用せずにPostgreSQLマテリアライズドビューを自動的に更新する
view_table_A外部データラッパーテーブルで名前が付けられたマテリアライズドビューを作成しましたtable_A。私が欲しいのは、に新しい挿入が行われるたびにビューが自動的に更新されるようにすることtable_Aです。トリガーを使用してこれを実行しようとしましたが、機能しませんでした。 トリガーを使用せずにマテリアライズドビューを自動的に更新することは可能ですか?

5
クエリを実行するためにアクセスするデータベースサーバーにインストールされているデータベースエンジンを確認するにはどうすればよいですか?
アクセス可能なDatasaseサーバーで実行されているSQLのタイプを確認したい。Webインターフェースとテーブルのリストにしかアクセスできません。 インターフェイスを介して、リストにあるテーブルに対してクエリを実行できます。 サーバーとサーバーが実行しているバージョンに関する詳細情報を取得するにはどうすればよいですか。サーバーが実行しているIPまたはポートについてはわかりません。 サーバーがMySQL、Mircosoft SQLサーバー、Oracle SQL、Postgre SQL、またはその他のSQLサーバーかどうかを知りたい。 私が話しているWebサイトは、 w3schools.com SQLエディターです。 編集2:一部のコマンドselect sqlite_version()は私にとっては機能しますが、機能しません。これは応答のスクリーンショットです。 編集3:Chromiumブラウザでは、コマンドは正しく機能しています。ただし、Firefoxブラウザーではコマンドは機能しませんでした。 また、私はLinuxを実行していることも述べました。 FirefoxとChromeで異なる結果が得られる理由は何だと思いますか?

1
更新後に行全体が同じままである場合にトリガーをチェックインする方法は?
もちろん、次のように比較するすべての列でそれを行うことができます: if (old.column1 = new.column1 and old.column2 = new.column2...) しかし、たとえば将来的に別の列を追加する場合は、ハードコーディングし、維持するのが困難になります。 個々の列をすべて手動で確認せずに、すべての列が同じかどうかを確認する方法はありますか?


1
別のマシンをターゲットとするpg_dump中に「pg_catalog.tablename」を作成する権限が拒否されました
一部のテーブルを9.5ベータ2から9.4.4サーバーにダンプしようとしています。私が使用しているコマンドの形式はかなり標準的です: pg_dump -t table dbname | psql -h hostname -d dbname 私はPostgresユーザーを使用していますが、これはおそらく理想的ではないと思いますが、これらはどちらも私が使用する開発データ処理ボックスであり、以下のエラーに関連しています。最初に、エラーが発生しました エラー:認識されない構成パラメーター "row_security" これは、この機能が9.5で新しく追加されたために予想されます。そうです。Postgresの異なるバージョン間でpg_dumpを実行することはお勧めできませんが、非常にあいまいなバグに遭遇し、大きな静的データの量。 したがって、この恐ろしいハックを使用してrow_securityエラーを削除し、最初のエラーで停止をオンにします。 pg_dump -t tablemame dbname |sed 's/SET row_security = off;//'| psql -v ON_ERROR_STOP=1 -h hostname -d dbname 私は今得ます: エラー:「pg_catalog.tablename」を作成する権限が拒否されました詳細:システムカタログの変更は現在許可されていません Postgresユーザー/ロールを使用することは望ましくないかもしれませんが、私の理解では、このような性質の権限の問題はないはずです。これは1回限りの操作であり、これらはライブサービスに接続されていないデータ処理開発ボックスであるため、理想的な企業データアクセスポリシーよりも好都合です。そうは言っても、これを正しく行う方法を理解し、今後これを回避することは良いことです。

2
PostgreSQLのビューとトリガーを通じて現在のユーザーを追跡する
現在のユーザーに応じてレコードへのアクセスを制限し、ユーザーが行った変更を追跡するPostgreSQL(9.4)データベースがあります。これはビューとトリガーによって達成され、ほとんどの場合これはうまく機能しますが、INSTEAD OFトリガーを必要とするビューに問題があります。私は問題を減らすように努めましたが、これがまだかなり長いことを前もってお詫びします。 状況 データベースへのすべての接続は、単一のアカウントを介してWebフロントエンドから行われますdbweb。接続されると、SET ROLEWebインターフェースを使用するユーザーに対応するように役割が変更され、そのような役割はすべてグループ役割に属しdbuserます。(詳細については、この回答を参照してください)。ユーザーがであるとしますalice。 テーブルのほとんどは、ここで呼び出しprivateて所属するスキーマに配置されていますdbowner。これらのテーブルには直接アクセスできませんdbuserが、別のロールにはアクセスできますdbview。例えば: SET SESSION AUTHORIZATION dbowner; CREATE TABLE private.incident ( incident_id serial PRIMARY KEY, incident_name character varying NOT NULL, incident_owner character varying NOT NULL ); GRANT ALL ON TABLE private.incident TO dbview; 現在のユーザーaliceが特定の行を使用できるかどうかは、他のビューによって決定されます。簡略化された例(減らすことができますが、より一般的なケースをサポートするには、この方法で行う必要があります)は次のようになります。 -- Simplified case, but in principle could join multiple tables to determine allowed …


1
PostgreSQL共通テーブル式と一時テーブル?
WITH上のPostgreSQLのドキュメントは、次の例を示します。 WITH regional_sales AS ( SELECT region, SUM(amount) AS total_sales FROM orders GROUP BY region ), top_regions AS ( SELECT region FROM regional_sales WHERE total_sales > (SELECT SUM(total_sales)/10 FROM regional_sales) ) SELECT region, product, SUM(quantity) AS product_units, SUM(amount) AS product_sales FROM orders WHERE region IN (SELECT region FROM top_regions) GROUP …
11 postgresql 

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.