タグ

postgresqlに関するokinakaのブックマーク (70)

  • 排他制御のためだけに Redis 渋々使ってませんか?データベース単独でアドバイザリーロックできるよ!

    トランザクション分離レベルについての教養があったほうがこの記事の内容を理解しやすいため,必要に応じてまず以下を参照されたい。 背景 以前, Qiita で以下の記事を投稿した。今回の議題に直接的な関係はないが,関連している部分があるため引用する。 MySQL/Postgres とも, MVCC アーキテクチャの恩恵で, SELECT と UPDATE は基的には競合しない。 単一レコードのシンプルな UPDATE でも排他ロックされ,排他ロック中のレコードへの UPDATE での変更操作は トランザクション分離レベルによらず ブロックされる。UPDATE 文に含まれる WHERE 句での検索もブロックされ,これはブロックされない SELECT による検索とは別扱いになる。 但し UPDATE 文の WHERE 句上で,更新対象をサブクエリの SELECT から自己参照している場合は例外。

    排他制御のためだけに Redis 渋々使ってませんか?データベース単独でアドバイザリーロックできるよ!
  • データベーススキーマの差分を解消するツールを作った話 - Evolutionary Architectures

    この記事は Kyash Advent Calendar 2019 2日目の記事です。 今回はKyashで利用しているPostgreSQLにおいて、スキーマの差分を解消するツールを作った話についてです。 ツールのリポジトリはこちらになります。 github.com このツールは、2つのPostgreSQLインスタンスからpg_dumpすることにより得られたDDL間の差分を検出し、差分を解消するためのDDLを生成することができます。 社内システムで活用できることを最初のゴールとして開発しました。 こんなことができます。 例えば、入力用のDDLをsource.sqlとdesired.sqlとして用意し、 source.sqlの状態からdesired.sqlの状態に変更するためのDDLを生成してみます。 pg_dumpを使うことを想定して最低限の実装をしているので、入力用のDDLがこんな感じになっ

    データベーススキーマの差分を解消するツールを作った話 - Evolutionary Architectures
  • PostgreSQL 9.6→10アップグレードのダウンタイムをpglogicalで最小化(翻訳)|TechRacho by BPS株式会社

    概要 原著者の許諾を得て翻訳・公開いたします。 英語記事: Upgrading PostgreSQL from 9.6 to 10 with minimal downtime using pglogical 原文公開日: 2017/11/10 著者: Rodrigo Rosenfeld Rosas PostgreSQL 9.6->10アップグレードのダウンタイムをpglogicalで最小化(翻訳) PostgreSQL 10がリリースされ、9.6クラスタを最新バージョンにアップグレードしてみたくなりました。しかし、以前アップグレードしたときのようにメンテナンス画面を開いてマイグレーションを実行するのに膨大な段取りが必要になるのでしょうか。そのときは、アプリをメンテナンスモードに切り替え、新しいダンプを取って新しいクラスタでリストアし、メンテナンスモードをオフにしました。 この方法だと、アプ

    PostgreSQL 9.6→10アップグレードのダウンタイムをpglogicalで最小化(翻訳)|TechRacho by BPS株式会社
  • Microsoft Build 2017 のキーノートで発表のあった MySQL / PostgreSQL 関連の発表をざっくりと - まいんだーのはてなブログ

    MicrosoftMySQL/PostgreSQL のマネージドサービスを始めます 内部的にはずっと前から取り組みがされていて、多くの新規 Azure ユーザから望まれていた一方なかなか出てこなかった MySQL/PostgreSQL のマネージドサービスがいよいよ出てきました。 azure.microsoft.com azure.microsoft.com 何年も待ったわ~ほんとに。。。 これまでの MySQL/PostgreSQL マネージドサービスの課題 各種クラウドにあるサービスには大きく2つの課題があったと思います “インスタンス” というサイジング どのサービスも基的に “仮想マシン” 単位で要求性能とキャパシティを決めて、そこにセットアップの自動化とバックアップ、そして別インスタンスへのフェイルオーバーを提供するものでした。 仮想マシンでのプロビジョニングはこれまでの

    Microsoft Build 2017 のキーノートで発表のあった MySQL / PostgreSQL 関連の発表をざっくりと - まいんだーのはてなブログ
  • PostgreSQL のパーティションテーブル自動生成 - Qiita

    パーティショニングとは パーティショニングについての詳細は Let's postgres パーティショニング : 用途と利点に詳しいですので、ここでは省略します。 パーティションテーブルの自動生成 親テーブルに加えて複数の子テーブルを作成するのに加え、親テーブルにトリガ (8.1 以前ではさらにルール) を定義する必要があります。 パーティショニング : 使い方 この記事では、パーティショニングの際に子テーブルを作る手間を省略する方法について紹介します。 サンプル実装 -- パーティショニング対象の親テーブル定義 CREATE TABLE logs ( tag TEXT, record JSON NOT NULL, time TIMESTAMP NOT NULL, CHECK(time IS NULL) NO INHERIT -- 親には直接書き込めない ); CREATE INDEX "

    PostgreSQL のパーティションテーブル自動生成 - Qiita
  • PHPからPostgreSQLに大量のデータを登録する

    PostgreSQLに大量のデータを登録する際はINSERTを使って一件づつ処理するより、COPYを使って一気に登録した方が実行速度が(かなり)速いです。 そこでPHPでもCOPY文を使ってみましょう。 pg_copy_fromを使う 登録するデータが配列に入っているならpg_copy_fromだけで一気に処理できます。 配列の1要素が1レコードに対応しています。1要素内では各カラムをデリミタ(デフォルトは”\t”)で連結します。 <?php $values = array(); $values&#91;&#93; = "1\tname1"; $values&#91;&#93; = "2\tname2"; $values&#91;&#93; = "3\tname3"; $db = pg_connect("dbname=hogedb"); pg_copy_from($db, 'table',

  • もうひとつの「PostgreSQL Internals」技術文書が公開されました

    最近、精力的にPostgreSQL関連の検証や技術情報の公開をしている日HPさんから、「PostgreSQL Internals」という技術文書がPDFで公開されました。 日HP ITサービス「HP OPEN SERVICES」 http://h50146.www5.hp.com/services/ci/opensource/ 上記ページの下の方に「PostgreSQLエンジニア向け!ストレージ内部構造および内部動作検証報告」というタイトルのPDFファイルをダウンロードすることができます。 PostgreSQLエンジニア向け!ストレージ内部構造および内部動作検証報告 http://h50146.www5.hp.com/services/ci/opensource/pdfs/PostgreSQL_Internals.pdf 章レベルで目次を抜き出すと以下のような内容になっています。

    もうひとつの「PostgreSQL Internals」技術文書が公開されました
  • PostgreSQL Internals

    コンテンツは、2014年1月30~31日に筑波大学で開講された「情報システム特別講義D」における講義「Inside PostgreSQL Kernel」の内容を再構成、加筆・修正したものです。 はじめに コンテンツについて コンテンツへのフィードバックについて アーキテクチャ概要 PostgreSQLの構成要素 PostgreSQLの基的なアーキテクチャ SQL文の処理される流れ トランザクション管理 トランザクション処理におけるACID特性 各レコードの可視性の管理 Atomicity(原子性)の実装 Consistency(一貫性)の実装 Isolation(分離性)の実装 トランザクション分離レベルの定義 Durability(永続性)の実装 チェックポイント メタデータ管理 pg_controlファイル OID/XID/TID システムカタログ MVCCとストレージ構造 テ

  • PostgreSQL9.3 開発と運用を支える新機能

    EnterpriseZine(エンタープライズジン)編集部では、情報システム担当、セキュリティ担当の方々向けに、EnterpriseZine Day、Security Online Day、DataTechという、3つのイベントを開催しております。それぞれ編集部独自の切り口で、業界トレンドや最新事例を網羅。最新の動向を知ることができる場として、好評を得ています。

    PostgreSQL9.3 開発と運用を支える新機能
  • シーケンスの代わりにuuidをIDとして使う

    stop using numbers as IDs. just use UUIDs. seriously — Postgres: The Bits You Haven’t Found by pvh UUID の違い v1 Generate a UUID from a host ID, sequence number, and the current time. v3 Generate a UUID from the MD5 hash of a namespace UUID and a name. v4 Generate a random UUID v5 Generate a UUID from the SHA-1 hash of a namespace UUID and a name. この内、ID として利用できるのは v1 と v4 の2つ。v1 は最後 48 ビットがハード固有のノー

  • タグ検索するならPostgreSQLで決まり!

    (Last Updated On: 2018年8月13日)PostgreSQL Advent Calender 2013、13日目のエントリです。 表題の通り「タグ検索するならPostgreSQLで決まり!」です。 追記:JSONの場合はPostgreSQLのJSONB型を利用してタグ検索を行うを参照 RDBはタグが苦手 WebアプリではRDBでは取り扱いづらいデータを取り扱う事がよくあります。タグの管理・検索はその一つです。 RDBはタグ情報の管理・検索をしっかりやれますが、どちらかと言うと苦手な分野です。しかし、PostgreSQLの 配列 GIN(Generalized Inverse Index – 転置インデックス) を使うと簡単かつ高速に処理できます。 PostgreSQLを使うとタグ検索が簡単・高速に実現できますが、Googleで「タグ検索 PostgreSQL」と検索しても

    タグ検索するならPostgreSQLで決まり!
  • Apache JMeterでPostgreSQLの負荷試験をする

    このエントリは、PostgreSQL Advent Calendar 2013のDay3の記事です。 「データベースの負荷試験」を考える時、皆さんはどのような方法で実施することを検討するでしょうか。自前のテストスクリプトでしょうか。あるいは、データベース単体の負荷試験は行わず、Webシステム全体の負荷試験として実施するでしょうか。 PostgreSQLには、pgbenchというベンチマークツールが付属しており、このツールのシナリオを作成することで多少は独自のシナリオでの試験を行うことも可能ですが、状況によってはそれだけでは自由度が不足することがあります。 今回は、Webシステムの負荷テストでよく使われるJMeterを使って、自由なシナリオでPostgreSQL単体の負荷試験を行う方法を紹介します。 (なお、JMeterは非常に多機能な負荷生成ツールですので、今回はJMeterの網羅的な説明

    Apache JMeterでPostgreSQLの負荷試験をする
  • RDS for PostgreSQLの中を覗いてみた(追記あり)

    皆さんお待ちかねの、RDS for PostgreSQLが昨日リリースされました。 Amazon Web Services ブログ: 【AWS発表】Amazon RDS for PostgreSQLがご利用可能になりました! http://aws.typepad.com/aws_japan/2013/11/amazon-rds-for-postgresql-now-available.html 既にインスタンスを立ち上げてみた方もいるようです。 Amazon RDS for PostgreSQLがやってきた!! | Developers.IO http://dev.classmethod.jp/cloud/amazon-rds-for-postgresql-now-on-sale/ cloudpackブログ: Amazon RDS で PostgreSQL が利用可能に http://bl

    RDS for PostgreSQLの中を覗いてみた(追記あり)
  • PostgreSQL の TOAST の仕組みと効果 | マイナビニュース

    こんにちは。渡辺です。 今回は、PostgreSQL の TOAST の仕組みについて紹介します。 PostgreSQL7.1 までは、タプル(フィールド)の大きさがブロックサイズ(デフォルト 8KB、最大 64KB。コンパイル時に指定)に制限されていました。 PostgreSQL7.2 以降は TOAST(The Oversized-Attribute Storage Technique)と呼ばれる仕組みが導入され、最大 1GB のタプルが利用できるようになりました。今回は TOAST の仕組みと効果について検証してみます。 ■TOAST とは TOAST とは、大きなタプルを複数に分割し、複数のブロックにデータを保存できるようにする仕組みです。データを分割すると同時に、圧縮も行います。 分割されたタプルはリンクドリスト型式で保存されており、TOAST が利用できるフィールド(テキスト型

  • PostgreSQL 9系の目玉、「レプリケーション機能」を試す

    PostgreSQL 9系の目玉、「レプリケーション機能」を試す:もう一度始めたい人のPostgreSQL(2)(1/2 ページ) 今回からは、PostgreSQL 9系で実装されたさまざまな新機能を実際に操作する手順を紹介していきます。まずは、PostgreSQL 9系の目玉機能、レプリケーション機能を設定し、その動作を確認してみましょう。

    PostgreSQL 9系の目玉、「レプリケーション機能」を試す
  • PostgreSQL 9.2の同期レプリケーションを利用する際の勘所

    DBMSの可用性とPostgreSQLのレプリケーション 勤怠管理やERPなど会社内の業務に欠かせないシステムはもちろんのこと、SNSやECサイトなど個人で利用するシステムでも、何かしらのDBMSを利用をするのが一般的です。 もしDBMSで障害が発生した場合、データの参照・更新が滞り、システム全体として役割を果たすことができなくなります。そのためユーザが利用したいときにシステムを利用可能にするためにはDBMSが継続的に稼働していることがとても重要です。 世の中にはDBMSは多数存在し、またDBMSの可用性を上げる機能やツールなどもさまざまに存在します。OSSの代表的なDBMSの一つであるPostgreSQLには可用性向上機能の一つであるレプリケーションが用意されています。 今回は最新バージョンであるPostgreSQL 9.2のレプリケーションについて、機能の紹介、利用時の注意点、設定によ

    PostgreSQL 9.2の同期レプリケーションを利用する際の勘所
  • MySQL / PostgreSQL

    データベースのMySQLとPostgreSQLの基的な使い方を紹介します。 phpMyAdmin や phpPgAdmin など、PHPから簡単に操作できる方法もありますが、 ここではコマンドラインから、それぞれのデータベースを操作する方法を説明します。 データベースの接続を行うには、もちろんデータベースのサーバープログラムが起動していることが前提です。 データベースに接続するクライアント用コマンドは以下の通りです。 MySQLの場合 > mysql -uユーザー名 -pパスワード データベース名 Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is xx to server version: x.x.xx-standard-log Type 'help;' or '\h'

  • PHPでのSQLインジェクション対策 - エスケープ・クォート編 — Let's Postgres

    第四企画 坂井 潔 ここではPHPSQLインジェクション対策としてエスケープ・クォート処理を行うケースを説明します。なおSQLインジェクションの簡単な説明や、プレースホルダを用いてより効果的な対策を行うケースに関してはプレースホルダ編を参照してください。 エスケープとは? それではエスケープ処理とはなんでしょうか? 分かりやすいケースとして、文字列を扱う場合を説明します。 例えば「名前がO'Reillyの行をテーブルusersから取得する」あるいは「テーブルusersに、名前はO'Reilly、メールアドレスはo'reilly@example.comとo'reilly_mobile@example.netの2つを改行で繋げたデータを、行として挿入する」と言ったSQLをつくると、この命令文全体が1つ文字列になります。その命令文としての文字列の中に、値としての文字列を埋め込む場合には、それが

  • Ywcafe.net

    Ywcafe.net This Page Is Under Construction - Coming Soon! Why am I seeing this 'Under Construction' page? Related Searches: Credit Card Application Contact Lens Online classifieds Healthy Weight Loss Anti Wrinkle Creams Trademark Free Notice Review our Privacy Policy Service Agreement Legal Notice Privacy Policy|Do Not Sell or Share My Personal Information

  • PHPから見たPostgreSQLの数値データ型(数値リテラル) | Let's POSTGRES

    smallintはint2、integerはint4 およびint、bigintはint8と同意です。またsequenceを使うという機能を除けば、serialはintegerと、bigserialはbigintと同様の動きをします。これらは小数点以下のない「整数値」です。 serial、bigserialの値のフォーマット・範囲のチェックなどはinteger、bigintと同じですので、以下はそれぞれに読み替えてください。 64bitシステムでの整数値のチェック smallintとinteger まず、値が負でない(すなわちマイナス記号がつかない)ことを必須にしてしまってよければ、smallintやintegerのチェックは簡単です。 if(!ctype_digit($_REQUEST['num']) || $_REQUEST['num'] > 32767) { // NG処理 } これ