「ポストグレス」「ポストグレスキューエル」などとも読む。 オープンソース系RDBMS(Relational Database Management System) のひとつ。 最近のバージョンでは(SQL99の仕様に近い)オブジェクト指向リレーショナルデータベースとしての機能も充実してきており、その高機能さが特徴となっている。 同じオープンソース系RDBMSでも、機能よりも速度と扱いやすさを選んだMySQLとは対照的である。
概要 PostgreSQLでプログラム上から単発のSQLを実行したい場合に、ファイルを経由せずに1回限りのパスワードを与える方法の話です。 最初に結論まとめ コマンドプロンプトの/cのセッション内で環境変数を設定し、そのままコマンドも実行します。例えば次のようになります。 cmd /c "set PGPASSWORD=user1password&&psql.exe --username=user1 --dbname=postgres --command="CREATE DATABASE database1'"" 話の背景 PostgreSQLでpsql.exeを使って、--commandオプシ…
はじめに みなさん、こんにちは。ACS事業部 亀崎です。 以前からPostgreSQLなどCloud Serviceのバージョンアップどうすればいいのかな、といつも考えていたのですが、Azure Database for PostgreSQL Flexible Serverの場合、メジャーバージョンアップ機能が1年前の2023年2月にGAになっていました。 techcommunity.microsoft.com こちらがドキュメントです。 learn.microsoft.com デモ環境の構築初期で、まだ壊れても問題にならないって状態のPostgreSQL Flexible Server(v1…
自分ようにメモ。PostgreSQLで定義しているDBのサイズを確認する必要が出てきた。 DBのサイズを確認するには、pgAdminのクエリツールなどを開いて以下のコマンドを実行するとよい。 SELECT datname, pg_size_pretty(pg_database_size(datname)) FROM pg_database;
はじめに RDSにてPostgreSQLを使っているとき、マスターユーザーとは別のユーザーを作ってそのユーザがオーナーのデータベースを作ろうとするとERROR: must be member of role "xxxxx"というメッセージが出ることがあります。例を以下に記します。 postgres=> CREATE ROLE testuser001 WITH PASSWORD 'hogehogehoge' LOGIN; CREATE ROLE postgres=> CREATE DATABASE mytestdb001 WITH OWNER testuser001; ERROR: must b…
Activerecord-Import とは github.com 結論(どうするか) インポート時に batch_size オプションを指定してやる。 具体例 User.import!(users, batch_size: 10000) PostgreSQL が落ちたときのエラーメッセージ PQconsumeInput() SSL SYSCALL error: EOF detected (ActiveRecord::ConnectionFailed) 参考 https://webcache.googleusercontent.com/search?q=cache:jdX4uXcvCb4J:h…
SREの林 aka もりはやです。 タイトルの通りですし、PostgreSQL界隈の皆さんには当たり前のことですが”失敗事例の共有はいくらあってもいいはず”の気持ちで本記事を書いています。*1 TL;DR 詳細 最新バージョンでアプリを移行した矢先にAurora PostgreSQLのv16.1対応が発表 これを受けて、意気揚々とAurora PostgreSQLのバージョンアップを実施 またしてもCPU高騰、そして504多発 調査開始 ZabbixにはSlow queryを出力する機能がデフォルトである クエリチューニングするならEXPLAINを使う ANALYZEを実行することで解決 仕上…
こんにちは、Tochiです。 最近忙しくてあまり更新できておらず、久しぶりの更新です。 先日業務しているとき、「トランザクションをしておけば行ロックって意識しなくてもいいのかな?それともDBによるのかな??」「そもそもトランザクションとロックって別物だよな・・ 」といった感じで混乱しました。 なので今更ながら、トランザクションとロックの関係についてまとめていきたいと思います。 はじめに 題名にRailsと書いていますが、実際はDBMSの話です、、笑 ただ、トランザクションやロックの話をRailsから入るとイマイチ理解なく、 なんとなくで実装できてしまいます笑 なので基礎の基礎から理解していこう…
SREの林 aka もりはやです。 先日オンプレで稼働していたとあるPostgreSQLのDBを、Amazon Aurora PostgreSQL(以後はAurora)に移行を行ったところ CREATE INDEX が以下のエラーで作成できない問題に苦労させられたため、解決策と合わせて公開します。 これがベストな対応かは自信がないため、より良い方法をご存知の方はお気軽に教えてください。 以下はDBのリストア中に CREATE INDEX で発生したエラーです。 pg_restore: error: could not execute query: ERROR: could not write …
はじめに PostgreSQLとPythonのORマッパーの確認でPostgreSQLを使うので、docker-composeで コンテナを起動してみた。 やること DockerHubのpostgresのオフィシャルページを確認する。 hub.docker.com オフィシャルページにdocker-compose.ymlの例が載っているのでこれを使用して、docker-compose.ymlを作成する。 # Use postgres/example user/password credentials version: '3.1' services: db: image: postgres re…
golangでDB接続(PostgreSQL)を試したのでそのサンプルです。 以下サンプル。 golang で PostgreSQL に接続 PostgreSQL を準備 まずは接続先のPostgreSQL環境を準備します。 ここは手っ取り早く、Docker で環境を作りました。 (前提) Docker がインストール済みであること postgresql がインストール済みであること(psql コマンドを使用して DB接続を確認するため) 下記の docker-compose.yml を作成し、「docker-compose up -d」で起動します。 [docker-compose.yml]…
Testcontainers を使うと,テストコードを実行するときに必要になるデータベース・キャッシュ・キューなどの依存関係をコード上で管理できて,実行後にはコンテナを自動的に消してくれるという使い捨て可能な仕組みを簡単に作れる❗️Testcontainers のサイトに載っている「Test dependencies as code」という表現はピッタリだと思う👌 testcontainers.com Testcontainers は Java / Go / .NET / Rust など多くの言語をサポートしているけど,今回は Python 用の testcontainers-python を…
連載記事「SpringBoot アプリ開発」を読み進めると、サンプルの Webアプリを制作することができます。 今回は、サンプルアプリのプロジェクトとSQLを作成していきます。 連載記事 SpringBoot アプリ開発の連載記事は以下の通りです。 概要・使用プロダクト プロジェクト作成・SQL作成(今回の記事) モデル・リポジトリの作成 コントローラー・メインの作成 HTML・JavaScriptの作成 CSS・画像の作成 テスト・動作確認 目次 ディレクトリ構成 ビルドファイルの作成 設定ファイルの作成 SQLファイルの作成 1. ディレクトリ構成 事前に以下のディレクトリ構成を作成してお…
連載記事「SpringBoot アプリ開発」を読み進めると、サンプルの Webアプリを制作することができます。 今回は、サンプルアプリの概要と使用製品を書いていきます。 連載記事 SpringBoot アプリ開発の連載記事は以下の通りです。 概要・使用プロダクト(今回の記事) プロジェクト作成・SQL作成 モデル・リポジトリの作成 コントローラー・メインの作成 HTML・JavaScriptの作成 CSS・画像の作成 テスト・動作確認 目次 アプリの機能 画面イメージ 使用プロダクト 1. アプリの機能 短いテキスト「つぶやき」を投稿できるアプリケーションです。 つぶやきの「作成・表示・更新・…
はじめに クロスアカウントのRDSに接続する場合、簡単に接続を構築する手法としては下記の様なものがあります。 パブリック接続 VPCピアリング PrivateLinkとNLB RDSへのパブリック接続はセキュリティ上好ましくないため、VPCピアリング接続を検討するケースの方が多いと思いますが、通信を行いたいVPCのCIDR重複などネットワークの制約がある場合、ピアリング接続を作成することができません。 そのような場合に、次の接続方式として採用しやすいのが、RDS Proxyを使った接続です。 一方で、3つ目に挙げたPrivateLinkとNLBを使用した接続は、通信上のオーバヘッドが発生する上…
はじめに 先日、Layerにgemを格納してAWS Lambda関数を動かす記事を書きました。 miyohide.hatenablog.com この記事では、Rubyで実装されたgemを使ってみたのですが、この記事ではネイティブ拡張を使ったgemを使う方法を記します。具体的には、PostgreSQLと接続するためのGemであるpg gemを使う方法を記します。 gemをzipで固めるだけではダメ? 任意の環境でbundle config set --local path 'vendor/bundle' && bundle installを実行し、zip -r my_ruby_package.z…
業務でOracleを使うことになるかもしれないため、検証目的でOracleの開発環境構築を進めている。 【Docker】Oracleを無料で簡単にローカルに構築する https://zenn.dev/re24_1986/articles/29430f2f8b4b46 結論から言えば、まんましろ氏の記事の通りに進めて無事環境を構築し、sqlplusでSQL実行まで進めることまでできました。 その中で気になったのが、CREATE TABLE &USER_NAME..tb_sample の部分です。 なぜドットが2つになるのか。調べました。 -- テーブル作成するユーザ(変数定義) DEFINE U…
はじめに エンジニアとしてのキャリアをスタートしたばかりの方が、ジュニアレベルやミドルレベルのエンジニアとして活躍するために必要なスキルや知識について考えてみます。 この記事はWEB領域のエンジニアを対象としています。 前提 前提として、私の知っている範囲のことしか書けませんが、弊社スマレジのエンジニアとして活躍できるレベルを目標としています。 スマレジでは、バックエンド、フロントエンドの領域で担当が分かれておらず、どちらも担当します。 インフラについては専属のチームがありますが、プロダクトを担当しているエンジニアと相談しながらインフラ設計が行われることが多く、インフラについての知識がなくても…
Ya8 最高!! Ya8というイベントに行ってまいりました。開催地は練馬はココネリホールでございます。いやー、最高のイベントでした。あまりに最高だったので帰ってきて速攻筆を取りブログを書いております。ちなみに酔ってます。ご容赦くださいw github.com 今回のYa8では人に話かけることについて改めて考えさせられました。私を含む読者の皆さんも技術カンファレンスによく行かれると思いますが、懇親会で人と話すのは、特に初めて会う方と話すのはなかなかハードルというか壁というか何かを感じることがあると思います。今回のYa8ではそれが一歳なくて、なぜかなと考えたのですが、会場の娯楽要素にあったのではな…
LT 枠が空いていそうな雰囲気を感じたので勢いで入れてみました。 先月は、申し込んでいた LT 大会が延期された結果登壇 0 だったので、1 月以来の LT でした。 jaws-ug.doorkeeper.jp といっても決めたのが開催 2 日前、その時点で社内勉強会の資料作成などがまだ残っていたため、実は準備が大変でした。 当日まで残り日数少ないのにうっかり(?)LT枠で申し込んでしまった。#22 JAWS-UG主催 週刊AWSキャッチアップ(2024/03/04週)に申し込みました! https://t.co/Ta37wHeoLd #jawsug @jawsdaysより— hmatsu47…
2024年3月15日に開催された『「GPUを活用したビッグデータ分析基盤を構築しよう」PG-Strom v5リリース記念』イベントでお話をしてきました。 bakusokudb.connpass.com15分の枠の予定だったのですが、公開された動画を見ると23分あるので、どうやら23分話していたようです(笑)。 PG-Strom 最近は仕事としてPG-Stromの検証をして、皆さんに使ってもらうためのノウハウを溜めたりしています。 PG-Stromは一部の人からは強い興味関心の対象となっていますが、まだまだ広く知られているとは言えないかな、と思っています。簡単に書くと PG-Strom は RD…
開発中のソースコードは、コンテナ内のファイルシステムに置くのではなく、ホストシステムのディレクトリで行うのが通常だそうです。 開発中は、「ボリュームマウンティング」という方法を用いて、そのファイルをコンテナ内の特定ディレクトリに反映させて実行させることになるそうです。 ウェブサーバーのポートも同様に、「ポートフォワーディング」という手法で、ホストシステムのポートをコンテナのポートに結びつけて実行するとのこと。 例: docker run -p 4567:4567 -v $(pwd):/app sinatra-app コンテナは、ホストシステムとは異なる「島」のようなものということのようです。 …
paiza timesを運営する弊社(paiza株式会社)は、2024年3月25日に東京都港区の虎ノ門二丁目タワーへオフィス移転をいたします。現在のオフィス稼働もあと一週間で、日数にするとたった10日。いよいよ来週より引っ越し準備ということで、本日はこだわりのオフィスを読者のみなさまにお知らせいたします。 「異能をのばせ。」を体現したオフィス 既にプレスリリースやnote記事などでお知らせの通り、新オフィスデザインは、、paiza株式会社のコンセプト「異能をのばせ。」です。出社とリモートのハイブリット勤務である弊社のオフィスの役割は「偶然を創造すること」。偶然を創造していくために「何通りもの答…
事象 rsql で -v オプションと -c オプションを併用するとエラーになる。 $ rsql -h redshift-cluster-poc-central.ceyg6jv96hfq.ap-northeast-1.redshift.amazonaws.com -U awsuser -d dev -v var_table_name='version()' -c 'select * from :var_table_name;' Password for user awsuser: Failed [Amazon][Amazon Redshift] (30) Error occurred whil…
前提 find_or_initialize_by にこだわるのは本質的ではなく、find_by や where などでも同じです。本質はタイムゾーンの違いです。 結論 具体例を見たほうが早いと思いますので、載せます。 NG な例 user = User.find_or_initialize_by( name: 'hoge', submitted_at: '2023/04/07 17:48:31' ) これを繰り返し実行した場合に、常に user.new_record? が true を返してしまいます。 OK な例 期待通りの動作をさせるためには、テキストでそのまま入れるのではなく Time.…