サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
中東情勢
pgsqldeepdive.blogspot.com
本記事は PostgreSQL Advent Calendar 2019 の1日目の記事です。初日から遅れ気味ですすみません。。 久しぶりの記事ですが、最近はPostgreSQLをゴリゴリと触る感じでもなくなってきているため、本記事もゆるめの感じでお送りしたいと思います。 ■PostgreSQLの「パフォーマンス分析」とは PostgreSQLのパフォーマンス分析は、ざっくり言って、以下のようなステップで進められます。(PostgreSQLには限らないと思いますが) パフォーマンスの状況から、課題について仮説を設定する。 パフォーマンスに関連する何の情報を収集するかを決める。 情報を収集する。 収集した情報を加工し、分析しやすい形式に整える。 分析し、仮説を検証、ないしは何かを発見する。 より深堀り、確証を高めるために、再度情報集をしたり、データを加工、分析したりする。 何か対策を打って、
先日開催されたPostgreSQLアンカンファレンスで tablelog という extension の話をしたのですが、本エントリでは改めてその紹介をさせていただこうと思います。 第10回PostgreSQLアンカンファレンス - Togetter https://togetter.com/li/1315752 ■DB移行やメジャーバージョンアップの時、、、 皆さんは、 システム更改によるDB移行 PostgreSQLのバージョンアップ 特定のテーブルだけ別インスタンスにコピーしたい といったことをしたい場合に、どのように対処しているでしょうか? その方式は? ツールは何を使う? ダウンタイムは? DBaaSの場合はどうする? 場合によって変わってくるかと思いますが、皆さんはどのように対処しているでしょうか? もっともシンプルな方法は Dump & Restore だと思いますが、データ
本エントリは PostgreSQL Advent Calendar 2018 の Day24 の記事です。 昨日の記事は @kabaome さんによる 拡張統計情報とテーブル結合 でした。 本エントリでは、PostgreSQLのカラムナーDB拡張である cstore_fdw について、その基本的な使い方から、 DBT-3 のスキーマとクエリを使ってベンチマークをしてみた結果を解説してみます。 とは言え、私自身、cstore_fdw をそれなりに使ったのはこれが初めてですので、あまり深く踏み込めていないところもあるかと思いますが、そういったところがありましたら、コメント欄や Twitter などで補足いただけると助かります。 ■cstore_fdw とは cstore_fdw は Citus Data によって開発されているオープンソースの PostgreSQL 拡張で、PostgreSQL
最近、久しぶりにPostgreSQLのクエリチューニングをしていたのですが、その過程で「この本はぜひもっと多くの人に読んでもらいたい」と改めて思い出した一冊がありました。 それは、「SQLパフォーマンス詳解(原題:SQL Performance Explained)」という本です。 SQLパフォーマンス詳解 http://sql-performance-explained.jp/ パフォーマンスチューニング、特にクエリチューニングについて説明する場合、その前提となる知識は広範なものになります。 そのため、自分が頑張って説明するよりも、優れたエキスパートのまとめたコンテンツを活用させてもらう方が、質・量ともに優れたインプットにしていただけるのではないか、と思うのです。 また、この「SQLパフォーマンス詳解」は非常に良い本であるにも関わらず、一般の出版社から出ているわけではないため、それほど積
先日、「How a single PostgreSQL config change improved slow query performance by 50x」というPostgreSQLのSSD環境でのチューニングの記事を見つけたのですが、これをTweetしたらRTやLikeを比較的たくさん頂きました。 How a single PostgreSQL config change improved slow query performance by 50x https://amplitude.engineering/how-a-single-postgresql-config-change-improved-slow-query-performance-by-50x-85593b8991b0 How a single PostgreSQL config change improved sl
少し前の話になりますが、みなさんお馴染みとなりつつある日本HP篠田さんから PostgreSQL 10 beta1 の資料が公開されました。 HP コミュニティ - 『篠田の虎の巻』 第7弾公開!PostgreSQL 10 beta 1に対応! - エンタープライズ・ビジネス・コミュニティ PostgreSQL 10 Beta 1 の新機能を検証した資料を公開しました。https://t.co/uFi49d095c#PostgreSQL10 #PostgreSQL — Noriyoshi Shinoda (@nori_shinoda) May 26, 2017 今回、私も事前レビューに参加させてもらいました。 本ドキュメントは全体で100ページ以上あり、以下のような構成になっています。 1. 本文書について 2. バージョン表記 3. 新機能解説 3.1 PostgreSQL 10における
5/11のMicrosoft Build 2017で、PostgreSQLのDBaaSがAzureで提供されることが発表されました。 [速報]マイクロソフト、Azureで「MySQL」「PostgreSQL」のデータベースサービス提供を発表、運用の手間は不要。Build 2017 - Publickey http://www.publickey1.jp/blog/17/azuremysqlpostgresqlbuild_2017.html 現時点ではプレビューのようですが、ちょっと興味があったので軽く触ってみました。 ちなみに、Azureは普段使っていないのでそんなに詳しくありません。 ■PostgreSQLのリソースを作成する まず、Azureのダッシュボードで「PostgreSQL」と検索すると、PostgreSQLのリソースが出てきます。 そこで「追加」を選び、入力項目を適当に埋めて
本日、「Hecatoncheir: The Data Stewardship Studio」という最近開発していた新しいツールをOSSとして公開しました。 Hecatoncheir: The Data Stewardship Studio https://github.com/snaga/Hecatoncheir 本ツールは、データベースのメタデータおよび実データの統計情報やプロファイルを用いることで、データ品質マネジメントおよびデータガバナンスを実施するデータスチュアードを支援することを目的としたソフトウェアです。 既に某所のデータウェアハウスのシステムの周辺で稼働しています。 本エントリでは、このツールの紹介をさせていただきます。(本ツールはPostgreSQLにも対応しております) ■本ツールを開発した背景 最近は、データウェアハウスの設計から構築、データマネジメント(ガバナンスやス
3月10日(金)に「In-database Analyticsの集い #1」というMeetupを開催することになりました。 In-database Analyticsの集い #1 - connpass 「In-Database Analytics」というのは、データベースに蓄積されたデータに対して、「データを取り出さずに」データベース内部で分析処理をする技術の総称だと思っていただければいいかと思います。 データベースに蓄積されるデータはどんどん大きくなっている昨今ですが、それに伴ってデータベースからデータを取り出してから分析処理をする、というのが難しくなりつつあります。そのため、データベースからデータを取り出さずに分析処理をする「In-Database Analytics」の重要性がより高まってくると感じています。 今回のMeetupでは、ソフトウェアによるIn-Database Anal
文書の類似度を計算する方法に「コサイン類似度」を用いる方法があります。 これは、出現する単語を出現回数などで数値化して、空間ベクトルに変換した上でベクトル同士の類似度を計算する、という手法です。 コサイン類似度 http://www.cse.kyoto-su.ac.jp/~g0846020/keywords/cosinSimilarity.html 最近、このコサイン類似度を使って、似ているデータを検索するWebアプリを試しに作っていたのですが、ふと、 「このコサイン類似度を使ったソート処理をPostgreSQLでどのように実装するともっとも高速な実装になるのだろうか。また、現実的なパフォーマンスを考えた時にデータ量や次元のサイズはどこまで増やせるのだろうか」 ということが気になりました。 PostgreSQLは、その拡張性の高さがウリの一つですが、そのため「UDFを作る」ということを考え
本エントリは PostgreSQL Advent Calendar 2016 の Day24 のエントリです。昨日は @mazudakz さんの「pg_stats_reporter をしくじった話」でした。読み応えあって面白かった。 さて、先日(と言っても結構前)、地理情報をPostgreSQLで扱う例として、巡回セールスマン問題をPostgreSQLで解きつつGoogle Mapsで可視化するエントリを書きました。 巡回セールスマン問題における最短経路をpgRoutingで探索する http://pgsqldeepdive.blogspot.jp/2016/09/pgrouting.html 今回は、もう少し進んでPostgreSQLにおける地理情報の検索とGoogle Mapsの動的な可視化を連動させてみましたので、その内容を紹介します。 実現したいことは、 観光に関連する情報をPos
今年も風物詩である PostgreSQL Advent Calendar の時期がやって参りました。Day1担当のデータマエショリスト @snaga です。 PostgreSQL Advent Calendar 2016 - Qiita http://qiita.com/advent-calendar/2016/postgresql 去年もDay1を担当した気がしますが、それはさておき。 余談ですが、今年のAdvent Calendarは [学生さん・初心者さん大歓迎!]Xamarin Advent Calendar 2016 - Qiita http://qiita.com/advent-calendar/2016/xamarin-welcome にも参加しております。また、 C# チュートリアル 全部俺 Advent Calendar 2016 - Qiita http://qiita
最近、なんだかんだとデータに触る機会が増えてきております。 Unix系エンジニア兼DBAとしては、CLI(コマンドラインインターフェース)が生産性が高くて好きだけど、一方で可視化もお手軽にやりたい、というケースが多々あります。 Jupyter Notebookでデータベースに接続して可視化できる、という話は以前から聞いたことがあったのですが、実際に試してみたことがありませんでした。 今回、軽くPostgreSQLで試してみたのでその手順を簡単にご紹介します。 ■セットアップ 以下の3つのモジュールをpipでインストールします。 jupyter psycopg2 ipython-sql [snaga@localhost]$ ipython notebook --ip=\* --port=8080 [W 16:01:11.273 NotebookApp] WARNING: The notebo
PostgreSQL 9.5の日本語マニュアルの検索システムをリリースしたので、ご紹介します。 PostgreSQL 9.5 マニュアル検索 http://snaga-lab.mybluemix.net/static/pgdoc/index.html 少し前からPostgreSQLのマニュアルを細かく調べる必要性が出てきたのですが、ご存じの通り、PostgreSQLのオンラインのマニュアルはGoogleと相性が良くありません。 本当はgrep -cでもいいくらいの機能なのですが、公開されているフォーマットがHTML、マニュアルのソースファイルはSGMLファイルなので、実際にそのままgrepしても、見栄え的にあまり嬉しくありません。 そのため、自分の開発の練習もかねてWebアプリとして作ってみました。 ■マニュアル検索システムの機能 検索システムのURLは以下です。 PostgreSQL 9
先日、PostgreSQLアンカンファレンスを開催した際、「pgRoutingを使って巡回セールスマン問題を解く」という発表を国府田さんがされていました。 第8回 PostgreSQLアンカンファレンス@東京(2016/9/10) - connpass http://pgunconf.connpass.com/event/37285/ 第8回 PostgreSQLアンカンファレンス ツイートまとめ - Togetterまとめ http://togetter.com/li/1023030 非常に面白そうな機能で、私も少し使ってみましたので、今回はその使い方や使用例などを含めてご紹介します。 ■「巡回セールスマン問題」とは何か 「巡回セールスマン問題」というのは、以下のようなものです。 巡回セールスマン問題(じゅんかいセールスマンもんだい、英: traveling salesman probl
数日前、Uberのブログで「Why Uber Engineering Switched from Postgres to MySQL」というエントリが公開されました。 Why Uber Engineering Switched from Postgres to MySQL - Uber Engineering Blog https://eng.uber.com/mysql-migration/ それに対して、PostgreSQLコミュニティ界隈でもいろいろなブログエントリが公開されました。 Robert Haas: Uber's move away from PostgreSQL http://rhaas.blogspot.jp/2016/08/ubers-move-away-from-postgresql.html On Uber’s Choice of Databases http:/
先日、次期メジャーバージョンの9.6のbeta2がリリースされました。 PostgreSQL 9.6 Beta 2 Released https://www.postgresql.org/about/news/1677/ 9.6では、集約関数やJOINなどもパラレルクエリに対応しており、パラレル処理されるようになっていますので、みなさんはもちろんパラレルクエリをゴリゴリと検証されている最中かと思います。 また、言うまでもないことですが、パラレルクエリはデータ分析のためにあり、データ分析といえばPythonなわけです。 本エントリでは、そんなパラレルクエリとデータ分析大好きな方たちに向けて、パラレル処理が可能な集約関数をPL/Pythonで作成する方法を紹介します。 前提としているバージョンは、PostgreSQL 9.6 beta2 です。 ■PL/Pythonでの集約関数の作成 パラレル
PythonやPL/Python、PostgreSQLを使ってデータ分析をIn-Database処理させるのがマイブームです。 今回は、データベース内に保存された文章のテキストデータから単語の出現頻度を使って話題になっているトピックを抽出する、という処理を行ってみます。 テキストを形態素解析する 形態素解析した結果をJSONBで取得する JSONBデータを対象に集計処理を行う 上記すべてをサーバサイドで実行する といったことをPostgreSQLを使って処理してみます。 ■データの準備 今回も東京カレンダーの「東京女子図鑑」からの文章をサンプルとして使ってみます。 31歳女性がするべき、銀座での“上質な”暮らし。大人の女の流儀とは?(1/2)[東京カレンダー] https://tokyo-calendar.jp/article/4640 今回は、docidという主キーとテキストを値としてd
MADlibは、現代的なデータ分析には欠かせない回帰分析やデータマイニングのアルゴリズムが実装されているオープンソースのライブラリです。 MADlibを導入することによって、これらのアルゴリズムをPostgreSQLのユーザ定義関数の形で使うことのでき、データベースサーバの内部でデータ分析の処理できるようになります。 今回は、このMADlibの導入方法から動作確認、ロジスティック回帰分析における簡単な使い方までをご紹介します。 ■MADlibとは何か MADlibは、もともとはGreenplumというPostgreSQLをベースにしたMPP製品(DWH用RDBMS)を開発していた企業が開発していたライブラリで、Greenplumで利用できるように開発されていたものでした。 2015年9月に、Greenplum(を買収したEMC)がMADlib(や他のソフトウェア類)をApache Foun
先月、弊社にデータベース系の研究をしていた中国人留学生がインターンに来ており、その彼にお願いしてPostgreSQLのパラレルクエリのスケーラビリティの調査と、プロファイリング+可視化のツールとしてFlameGraphを使ってもらいました。 大学のスケジュールの関係上、インターンの期間が急遽、3週間から2週間に短縮されてしまったため、結果をきちんとまとめたり追試をしたりといったところまでは到達できなかったのですが、個人的にもそれなりに面白いアウトプットになったと思いますので、簡単にご紹介したいと思います。 なお、細かい手順の詳細などは、インターンに参加していた学生さんのGithubにまとまっています。参考文献に載せておきますので、興味のある方はそちらも参照してください。(本テストと直接関係のない内容も含まれています) ■テストの背景 PostgreSQLの9.6develにパラレルシーケン
先月、PostgreSQLアンカンファレンスで「PL/Pythonで独自の集約関数を作ってみる」という発表をしました。 本エントリでは、その詳細について紹介させていただきます。 ■なぜPL/Pythonで集約関数なのか? 既に広く知られている通り、PostgreSQLではさまざまなプログラミング言語でプロシージャ/ファンクションをユーザが定義することができます。 では、なぜPL/Pythonで集約関数なのでしょうか? まず1つ目の理由としては、Pythonとデータ処理が非常に相性が良い、ということが挙げられます。古くから統計解析でRが使われてエコシステムが発展してきたのと同じように、最近ではPythonを取り巻くデータ分析に関するエコシステムが大きくなり、データ分析に関するさまざまな処理をPythonで行えるようになってきています。 2つ目の理由としては、データ処理と集約関数というのは切っ
以前、オンラインで販売していたもののPaypalとのインテグレーションがうまく動かなくなりそのままになっていた「PostgreSQLアーキテクチャ入門(自習用教材)」の販売をGumroadで再開しました。 PostgreSQLアーキテクチャ入門(自習用教材) http://www.uptime.jp/ja/products-services/pgsql-training/dg01/ 1時間弱の同名のセミナーの内容(スライド動画と音声のMP4)とPDFファイルです。 特に、 普段、地理的制約や時間的制約でなかなかセミナーに参加できない セミナー後に配布された資料を見ただけではよく理解できない 後輩や部下の教育などのために簡単な教材を探している という方にお勧めです。 何年か前のマテリアルですが、今でも十分通用する内容だと思いますので、PostgreSQLに興味のある方は冬休みの軽い勉強用にぜ
先日、第6回 PostgreSQLアンカンファレンスを開催したのですが、その際、Kuwata氏の以下のプレゼンを聴く機会がありました。 Nippondanji氏に怒られても仕方ない、配列型とJSON型の使い方 (in PostgreSQL) http://kwatch.houkagoteatime.net/blog/2015/12/10/pg-array-and-json-types/ 一言で言うと、PostgreSQLのJSONを使って というようなデータ構造を生成したいのだがPostgreSQLでは実現が難しい、という内容でした。 その時は、「ふむふむ」と聞いていたのですが、最近、JSONの機能に興味を持っていたこともあり、「どうにか望むデータ構造をどうにか実現できないだろうか?」ということが気になっていました。その後、いくつか調査してみた結果、わりと簡単に実現できることが分かりました
目次は以下のような感じです。 全体感 クライアントからデータベースに接続するまで アクセス制御 通信の暗号化 ユーザ認証 パスワードの設定 コマンドの実行やオブジェクトへのアクセス ロール ロールとシステム権限の管理 システム権限 システム権限の獲得 オブジェクト権限の管理 権限の棚卸、クリーニング SQLファイアーウォール テーブル内部の詳細な権限制御 テーブル内部における権限設定 行レベルの制御 列レベルの制御 データの暗号化 ログと監査 「監査ログ」とは? pg_auditモジュール ログの収集と監査の実施 ログの可視化 その他 バックアップファイルのセキュリティ システムカタログ Postgres Advanced Security Pack 参考文献 Q&A 当日は多くの方に参加いただき、本当にありがとうございました。 PostgreSQLのセキュリティは、全体像を含めて体系的に
今年もこの季節になりました。PostgreSQL Advent Calendar 2015のDay1の記事です。 今回は、現在開発中のPostgreSQL 9.6に実装されたパラレルシーケンシャルスキャンについて、動作確認とフラッシュストレージでの簡単な性能検証をしてみようと思います。 なお、現在開発中の機能ですので、正式リリースされる時には仕様や動作などが変わっている可能性があることをご了承ください。 ■「パラレルシーケンシャルスキャン」とは 「パラレルシーケンシャルスキャン」は、その名の通り、シーケンシャルスキャンを並列処理する機能です。 今まで、PostgreSQLでは1つのCPUを使ってシングルスレッド(というかプロセス)でしか処理をすることができませんでした。 しかし、直近のPostgreSQLのメジャーバージョンの拡張を見ていた方はご存じの通り、PostgreSQLではパラレル
昨日、PostgreSQL勉強会で「PostgreSQLハッキング 最初の一歩」と題して、PostgreSQLの拡張開発の初歩についていくつかお話させていただきました。 第33回 PostgreSQL 勉強会(2015年11月14日) http://www.postgresql.jp/wg/shikumi/pgstudy_33/view 本エントリでは、勉強会でPL/Pythonの例としてご紹介した「自動要約APIをPostgreSQLに組み込む」について、もう詳しく紹介させていただこうと思います。 (右のサムネイルの意味は本エントリの最後に分かります) ■「自動要約API」とは? 自動要約APIは、10月末にリクルートテクノロジーズさんがリリースされた自然言語処理のライブラリで、Pythonで書かれたものです。 自動要約APIを作ったので公開します | RECRUIT TECHNOLOG
先日、sql_firewallというPostgreSQLの拡張モジュール(EXTENSION)をリリースしました。 https://news.ycombinator.com/item?id=10109566 https://github.com/uptimejp/sql_firewall このモジュールは、PostgreSQL上で実行可能なSQLを制限することで、SQLインジェクションを防ぐことを目的としたものです。 今回はこの sql_firewall について、その仕組みと使い方を簡単にご紹介します。 ■sql_fiewallの仕組み sql_firewallには、以下の3つの動作モードがあります。 学習モード(learning) 警告モード(permissive) 防御モード(enforcing) 学習モードではPostgreSQL上で実行可能なSQL文を学習させることができます。
【9.5新機能チェック】BRINインデックス, Part 1: BRINインデックスとは何か、その仕組みを探る 既に試してみている方もおられるかと思いますが、7月2日にPostgreSQL 9.5 alpha1 がリリースされました。 PostgreSQL: PostgreSQL 9.5 Alpha 1 Released PostgreSQL 9.5 Alpha 1登場 | マイナビニュース PostgreSQL 9.5にはいろいろと新しい機能が追加されていますが、その中に「BRINインデックス」という機能があります。 最近、人と話すと「BRINってどうなのよ?」と話題になることが増えており、また直近では情報系システムのプロジェクトに参加することが多く、個人的にいろいろと期待している機能の一つだったりします。 というわけで、今回から3回連続で、この「BRINインデックス」について、その仕組
先日、NECさんからPostgreSQLの暗号化モジュール「Transparent Data Encryption for PostgreSQL Free Edition」がGPLv3ライセンスのOSSとしてリリースされました。 NEC、国内初データベース暗号化ソフトウェアを無償公開 ~ 自己復旧や暗号鍵管理の機能を搭載した製品版も発売 ~ 多くの方がご存じの通り、データベースのセキュリティは、近年非常に重要なトピックの一つになっています。 PostgreSQLには、以前からpgcryptoと呼ばれるモジュールが提供されていましたが、これはあくまでも暗号化を実現するSQL関数を提供するレベルで、実際に使おうとするとアプリケーションから明示的に呼び出す必要があるなど、使いこなすには煩雑なモジュールでした。(私も昔のプロジェクトで使っていたことがあります) pgcrypto 今回NECさんから
次のページ
このページを最初にブックマークしてみませんか?
『PostgreSQL Deep Dive』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く