PostgreSQLのソースコードをWebAssemblyバイナリとしてビルドしたことで、Node.jsなどのJavaScriptランタイムやWebブラウザ上で(ほぼ)フル機能のPostgreSQLを実行可能にした「PGlite」が公開されました。 PGliteはPostgreSQLのCのソースをEmscriptenでコンパイル PostgreSQLはオープンソースの代表的なリレーショナルデータベースであり、C言語で開発されています。 PGliteはこのPostgreSQLのCのソースコードのビルドにEmscriptenコンパイラを使用してWebAssemblyバイナリとして出力、JavaScript/TypeScriptからライブラリとして呼び出せるようにしたものです。 ただしEmscriptenでコンパイルされたプログラムは新しいプロセスをフォークできないため、PGliteはPostg
Do You Really Need Redis? How to Get Away with Just PostgreSQL There’s a tried-and-true architecture that I’ve seen many times for supporting your web services and applications: PostgreSQL for data storage Redis for coordinating background job queues (and some limited atomic operations) Redis is fantastic, but what if I told you that its most common use cases for this stack could actually be achie
postgres=# LISTEN channel; LISTEN postgres=# NOTIFY channel; NOTIFY PID 1311のサーバプロセスから非同期通知"channel"を受信しました。 postgres=# NOTIFY channel; NOTIFY PID 1311のサーバプロセスから非同期通知"channel"を受信しました。 postgres=# NOTIFY channel, 'payload'; NOTIFY PID 1311のサーバプロセスから、ペイロード"payload"を持つ非同期通知"channel"を受信しました。 postgres=# SELECT pg_notify('channel', 'pg_notify payload'); pg_notify ----------- (1 行) PID 1311のサーバプロセスから、ペイロー
新バージョン(Ver.3.0.0)公開! SQLを使ったデータベースの操作、作成、管理について、実習形式で基礎から学習できる教科書です オープンソースデータベース標準教科書は、データベース初心者を対象にSQLを使ったデータベースの基本的な操作から一歩進んだ使い方までを実習形式で解説している学習テキストです。 PostgreSQLの基本操作から体系的に解説をしているので、教育機関はもとより企業でのPostgreSQLの研修用テキストとして多く利用されているほか、「OSS-DB技術者認定試験 Silver」の学習にも役立てることができます。 (注:出題範囲の全てを網羅しているわけではありません。OSS-DBの受験対策は、LPI-Japan OSS-DB認定教材をご利用ください。) 今回のVer3.0.0へのバージョンアップでは基準となるデータベースをPostgreSQL 13にアップデートし、
-------------------------------------------------------- -- users テーブルについて、部署・役職・作成日ごとに件数を集計する -- (MySQL用) -------------------------------------------------------- SELECT u.department_code `部署コード`, u.role_code `役職コード`, DATE_FORMAT(u.created_at, '%Y-%m-%d') `作成日`, COUNT(*) `人数` FROM users u GROUP BY u.department_code, u.role_code, DATE_FORMAT(u.created_at, '%Y-%m-%d') ORDER BY u.department_code ASC
本番環境ではDBはコンテナ化することは少いと思いますが、諸事情によりメモ。 前知識 Docker環境でPostgreSQLを扱う場合に事前に知っておいたほうが良い知識。 /docker-entrypoint-initdb.d/ PostgreSQLのイメージ(MySQLも)では、/docker-entrypoint-initdb.d/以下に置かれたファイルを起動時に実行する仕組みがあり、これらを利用してDBの初期設定・初期データの作成などを行うことができる。 サーポートされている拡張子は.sh, .sql, .sql.gzみたい。 /var/lib/postgresql/data PostgreSQLのデータ保存場所のパスは/var/lib/postgresql/dataとなる。これをローカルにマウントしてデータの永続化を行う。 基本 起動 まずはシンプルにPostgreSQLをDocke
pg_stat_activityとは? サーバプロセスあたり1行の形式で、状態や現在の問い合わせなどのプロセスの現在の活動状況に関連した情報を表示する。 pg_stat_activityはシステムの現在の状態を表示するための定義済みのビューの一つであり、その中でも動的統計情報ビューです。 動的統計情報ビューはセキュリティ制限があり、一般ユーザーは自身のセッションに関する全情報だけを参照できる。他セッションに関する行では多くの列がNULLになる。 pg_stat_activityの実行結果 pg_stat_activityの実行結果は以下のとおり それぞれのカラムの詳細については「pg_stat_activityのカラム」を確認して下さい。 postgres=# select * from pg_stat_activity where datname = 'postgres'; -[ REC
SmartHRで届出書類という機能を担当しているプロダクトエンジニアのsato-sと申します。 今日は、以前私が調査にとても苦労したパフォーマンス上の問題の話を紹介したいと思います。 TL;DR PostgreSQLのアップグレードを実施した アップグレード後、今までは問題のなかった特定のクエリの実行に1時間超かかり、DBのCPU使用率がピッタリ100%に張り付くようになった 色々調査した結果、PostgreSQL上の型キャストの場所のせいで、良くないクエリプランが選択されることが原因だった 型キャストの場所には気をつけよう PostgreSQLのアップグレードと挫折 SmartHRでは基本的にWebアプリケーションのデータベースとしてGoogle CloudのCloudSQLによって提供されるPostgreSQLを利用しています。 私の担当している届出書類機能では、利用中のPostgre
trdsqlというコマンドラインツールを作りました。 Goで作ってます。 githubの trdsqlからダウンロード出来ます。 またLinux/Windows/macOSのバイナリもあります。 以下は、古くなっている内容もいくつかあります。 最新版に対応した、より詳細な内容は trdsql 目次 | Noboru Saito's page を参照して下さい。 これは何? 簡単に言えばCSV(TSV含む)やLTSVに対してSQLを実行できるツールです。 同様のツールが q や textql 等いくつかあります。 trdsqlはPostgreSQLドライバとMySQLドライバを含んでいて実際にDBに接続することでSQLite以上の機能を使用できるようにしています。 PostgreSQLやMySQLの構文が使えるだけではなく、CSVファイルと実テーブルでJOINしたり、CSVファイルからテーブ
更新日: 2023年9月29日 2023年秋にリリース予定となっている PostgreSQL 16 の新機能や性能向上、非互換変更点の主要なものについて動作検証を行った結果を報告します。 本検証レポートは実施手順をコマンドレベルで記載しているため、PostgreSQL 16 の新機能を実際に動作させて確認したい方のガイドブックとしても活用できます。 PostgreSQL 16 の主要な強化点は以下の通りです。 性能向上 パラレルクエリ対応追加 ウィンドウ関数の最適化 同時データ投入の性能向上 SIMD CPUアクセラレータ対応 SQL機能 SQL/JSON 対応 整数リテラル表現の追加 ICU照合順序の拡張 ロジカルレプリケーション機能追加 スタンバイ上でのパブリケーション トランザクションの並列適用 双方向ロジカルレプリケーション クライアント機能 libpqロードバランス psqlで拡
今回は、PostgreSQL 9.5(以下、9.5)で実装された以下2つの機能について、実際に動かしながら紹介します。 UPSERT(ON CONFLICT句)の実装 GROUPING SETS句/CUBE句/ROLLUP句の実装 UPSERT(ON CONFLICT句)の実装 9.5ではINSERT文にON CONFLICT句が追加されました。これは一般的に「UPSERT」として知られている機能です。この句を利用すると、キー値の重複等でエラーとなっていた挿入処理を自動的に他の処理に代替して実行させることができます。 このON CONFLICT句には2つの動作を指定できます。1つはDO NOTHING句です。ON CONFLICT句にDO NOTHING句を指定すると、テーブルに挿入したい行がまだ存在しない(制約に違反する行が存在しない)場合は通常の挿入処理となります。一方、テーブルに挿入
2022/3/30 に開催されたテーブル設計とデータモデリングをテーマにした発表と座談会(雑談)。 <発表①>超入門!テーブル設計をデータモデリングから考えよう <発表②>テーブル設計の考え方とやり方【入門編】 雑談とQ&A 続きを読む
最近めっちゃLaravel使ってます。 で、Laravelのコネクションプーリングの話です。 コネクションプーリングとは、DBとの接続を永続化させること。 フレームワークによっては、これがデフォルトで永続化されているものもあるようですが、Laravelの場合はデフォルトで永続化がオフになっています。 DBとの接続の永続化、というと語弊があるかもしれないので補足しておくとPDOオブジェクトのインスタンス化時の接続をキャッシュしておく、といったほうが良いでしょうか。 これによって、毎回クエリ実行時に接続をする必要がなくなるのでオーバーヘッドが短縮され、高速化される、というわけですね。 あまり必要に感じる場面には出くわさないかもしれませんが...笑 で、Laravelでコネクションプーリングを有効にする設定が下記です。 'pgsql' => [ 'driver' => 'pgsql', 'url
T-SQL - LIKE を使ってアンダースコア(_)やパーセント(%)を含む文字列を探す方法 0 0 LIKE オペレーターとワイルドカード SELECT 文を書く時に、WHERE 句で LIKE オペレーターを使って、特定の文字やパターンを含む値を持つレコードを取得する機会があると思います。 LIKE オペレーターでは、いくつかの文字はワイルドカードとして扱われます。 パーセント(%) ワイルドカード パーセント(%)は 「 0 個以上の何らかの文字列 」という意味のワイルドカードです。 前方一致で条件をしたい時は検索したい文字列の後に、部分一致にしたい時は前後に % をつけることでその文字列を含む値を持つレコードを検索することができます。 次のような Student テーブルがあります。 LIKE を使ってアンダースコア(_)やパーセント(%)を含む文字列を探す方法 1 LastNa
PostgreSQL 14正式リリース。多くの接続を使用するワークロードや論理レプリケーションでの性能向上、可観測性の向上など新機能 オープンソースのリレーショナルデータベース「PostgreSQL 14」の正式版がリリースされました(日本語版のプレスリリース)。 PostgreSQLは毎年9月末から10月初旬にメジャーバージョンアップが発表されており、今年も順調に新バージョンが登場しました。 参考:PostgreSQL 13正式版リリース。B-Treeインデックスの重複排除、同一テーブル内でのVacuum並列処理など新機能 News: PostgreSQL 14 Released! https://t.co/vfM3ajUFnT — PostgreSQL (@PostgreSQL) September 30, 2021 PostgreSQL 14では、頻繁に更新されるインデックスを持つテ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く