はじめに 初めまして、株式会社Techouseエンジニアインターンの sakaidubz と申します。本日は私の携わっているプロダクトであるクラウドハウス労務で利用している RLS (Row Level Security) の技術について紹介します。 Techouse では、重要技術として RLS を多用しています。 通常 PostgreSQL の運用時には利用しないものであるため Techouse の開発メンバーとしてジョインしたみなさんが手慣れるまでに少し苦労をされているようです。 そこでこの場を借りて解説してみようと思い立ちました。 クラウドハウス労務について RLS について紹介する前に、私が開発しているクラウドハウス労務について紹介します。 クラウドハウス労務は人事労務における複雑な業務の電子化を推進するセミオーダー型・クラウド業務支援サービスです。各種手続きや年末調整といった法
ホーム / OSS Development / PostgreSQL のマテリアライズドビューを高速に最新化する:<コミュニティへの機能提案と拡張モジュール pg_ivm > この記事は株式会社SRAの技術情報誌「GSLetterNeo Vol.173(2022年12月発行)」の記事「PostgreSQL のマテリアライズドビューを高速に最新化する」を許可を得て転載したものです。 はじめに PostgreSQLは広く使用されているオープンソース・ソフトウェアのRDBMSです。SRA OSS LLC ではPostgreSQLに関するサポートやコンサルティングのサービスを提供する一方、技術開発室という部署ではPostgreSQL開発コミュニティへの貢献やPostgreSQLに関する研究開発といった活動を行っています。本稿ではその中から「増分ビューメンテナンス(Incremental View
About This Title Pages: 454 Published: June 2024 ISBN: 9798888650387 In Print High Performance PostgreSQL for Rails Reliable, Scalable, Maintainable Database Applications by Andrew Atkinson Build faster, more reliable Rails apps by taking the best advanced PostgreSQL and Active Record capabilities, and using them to solve your application scale and growth challenges. Gain the skills needed to comf
SmartHRで届出書類という機能を担当しているプロダクトエンジニアのsato-sと申します。 今日は、以前私が調査にとても苦労したパフォーマンス上の問題の話を紹介したいと思います。 TL;DR PostgreSQLのアップグレードを実施した アップグレード後、今までは問題のなかった特定のクエリの実行に1時間超かかり、DBのCPU使用率がピッタリ100%に張り付くようになった 色々調査した結果、PostgreSQL上の型キャストの場所のせいで、良くないクエリプランが選択されることが原因だった 型キャストの場所には気をつけよう PostgreSQLのアップグレードと挫折 SmartHRでは基本的にWebアプリケーションのデータベースとしてGoogle CloudのCloudSQLによって提供されるPostgreSQLを利用しています。 私の担当している届出書類機能では、利用中のPostgre
SmartHRではRuby on Railsを多くのサービスで採用しています。 そのため、不足している機能や不具合があればrails/railsへコントリビュートすることがあります。 今日は、日々のぽつぽつとしたコントリビュートの中から、Rails 7.1に追加したUNIQUE制約について紹介します。 unique_constraint(UNIQUE制約) UNIQUE制約(unique_constraint)はRails7.1(執筆時は未リリース)から利用可能になるActiveRecordの新機能です。 rails/rails#46192 PostgreSQLでしか利用できませんが、下記のようにunique_constraintで遅延可能なUNIQUE制約を定義できるようになりました。 # create_table内で使う場合 create_table :items do |t| t.i
データベースのスキーマを変更するときは、スキーマの変更作業によってテーブルが長期間ロックされてしまわないように注意が必要です。 2019年にリリースされたPostgreSQL 12.0以降では、NOT NULLを安全に追加するためによりよいベストプラクティスができています。まだ知らない人もいるかもしれないので、ここで紹介します。 何が問題なのか?次のようなDDLコマンドを考えます。 -- posts.moderatedをNULL禁止にする ALTER TABLE posts ALTER COLUMN moderated SET NOT NULL;これはテーブルをACCESS EXCLUSIVEでロックしたままフルテーブルスキャンを行います。その間は他のトランザクションはこのテーブルに関する処理を進行できません。 テーブルが小さければこれで特に問題ありません。しかし、postsがそれなりに大
The following information focuses on operating systems using the GNU C library (glibc), which includes most popular Linux distributions. All versions of PostgreSQL are affected. Other operating systems could in principle have the same issues, but we have not gathered any information about that. PostgreSQL uses locale data provided by the operating system’s C library for sorting text. Sorting happe
TLDR Locale data changes - PostgreSQL wiki を読むべし glibcが2.28以前から以降に更新される際に、ロケールによる照合順序の変更の影響を受け、インデックスが壊れる 誤ったパーティションに書き込んでしまうことがある Ubuntu 18.04以前から18.10、20.04以降、Debian 9以前から10以降、CentOSの6から7(de_DE.UTF-8ロケールの場合のみ)、CentOS 7以前から8以降など ストリーミングレプリケーションでこれらのバージョンを跨ぐとレプリカ側が壊れる なんで? データベースには、データを素早く取り出したり、不正なデータ(IDの重複、データ同士の関係の矛盾)が生じないようにするために、インデックスが使われています。 インデックスは多くの場合、データを並べ替えた際の順序に依存しています。(順番の定義が変わると異常
ajcwebdev Posted on Jul 17, 2021 • Updated on Oct 24, 2023 • Originally published at ajcwebdev.com Outline Introduction Provision a PostgreSQL database with Railway Railway Dashboard Railway CLI Check Railway CLI version Login with railway login Initialize project with railway init Provision PostgreSQL with railway add Connect to database Seed database List tables in database Describe table Quit p
by Dane Avilla The entertainment industry has struggled with COVID-19 restrictions impacting productions around the globe. Since early 2020, Netflix has been iteratively developing systems to provide internal stakeholders and business leaders with up-to-date tools and dashboards with the latest information on the pandemic. These software solutions allow executive leadership to make the most inform
しばたです。 少し前のはなしですが、Amazon RDS for PostgreSQLでpg_bigm拡張がサポートされ全文検索が容易に実行できる様になりました。 本記事ではこのアップデートについて簡単に解説します。 Amazon RDS for PostgreSQLでのpg_bigm拡張サポート PostgreSQLではデータベースの拡張機能として全文検索を導入することが可能で、RDS for PostgreSQLではこれまで3-gram検索を行うpg_trgm拡張がプレビュー機能として使用可能でしたが、今回は標準機能として2-gram検索を行うpg_bigm拡張が追加されています。 ユーザーガイドによる更新情報を見ると、pg_bigm拡張は既存の環境すべてというわけではなく現時点で最新マイナーアップデートから追加される形になっています。 PostgreSQL 13 : PostgreS
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
Under the hood, Logidze is based on just two ideas: Use database triggers to track changes. No Active Record callbacks (can be confusing and hard to maintain), Ruby or Rails code (not too fast), just plain old PostgreSQL triggers (fast and robust). MySQL is not supported yet, but it’s a matter of one solid PR. Keep the changelog next to the record data (in a log_data Postgres’ JSONB column). If yo
PostgreSQLに超高速な日本語全文検索機能を追加するPGroongaを開発している須藤です。今回はPGroongaやpg_bigmなど拡張モジュールを使わずにPostgreSQLの組み込み機能だけで日本語全文検索を実現する方法を紹介します。PGroongaを使う方法はRuby on RailsでPostgreSQLとPGroongaを使って日本語全文検索を実現する方法を参照してください。 Heroku PostgresなどDBaaSとして提供されているPostgreSQLではPGroongaを使えません。(DBaaSとして提供しているベンダーがPGroongaをインストールしてくれないから。)PostgreSQLの組み込み機能だけでは日本語全文検索を満足に実現することができないので、DBaaSのPostgreSQLを使っていると次のように日本語全文検索で困ってしまいます。 日本人のプ
2020年9月24日にPostgreSQL 13がリリースされました。それに伴い、OSSデータベース技術者に大好評の篠田の虎の巻「PostgreSQL 13 新機能検証」が公開されました。 今回も、英語版PDFと日本語版PDFの両方がダウンロード可能です。 篠田の虎の巻「PostgreSQL 13 新機能検証」英語版: PostgreSQL 13 GA New Features en 20200927-1.pdf 篠田の虎の巻「PostgreSQL 13 新機能検証」日本語版: PostgreSQL 13 GA New Features ja 20200927-1.pdf PostgreSQL 13は、PostgreSQL 11、および、PostgreSQL 12で追加された多くの新機能の正常進化版です。また、未来のバージョンに対する準備機能がいくつか組み込まれました。オープンソースのデー
Let's assume that in our health care application we have a page which shows all Patients. This page also has a filter and it allows us to filter patients by their name. We could implement the filter as shown here. 1 2Patient.where("lower(first_name) = ?", first_name.downcase) 3 Copy There might be many users with the same name. In such cases, to speed up the search process, we can add an index. Bu
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く