https://kaigionrails.org/2023/talks/kubo/
こんにちは、MackerelチームでSREをしている id:heleeen です。 2023年3月に実施したMackerelのメンテナンスでは、データベースをAmazon RDSからAmazon Auroraに移行しました。この記事ではAuroraを選択した背景や、移行で考慮したことについてお伝えします。 データベースのアップグレードを機に検討 Auroraへ移行することによるメリット パフォーマンスの改善 マイナーバージョンアップのダウンタイムが短く サイジングを適切にできリソース活用も効率的に リードレプリカの運用負荷も改善 Auroraのリードレプリカを利用した移行 RDSにAuroraのリードレプリカを作成する リードレプリカの昇格と切り替え 本番のAurora移行に向けて準備したこと 検証環境で移行して課題を確認 本番メンテナンス時のバックアッププランを用意 Mackerelのメ
こんにちは、sue445です。 先日社内で使ってるGitLabのリプレイスをしたのでその辺の話をしたいと思います。 リプレイスの内容 今回のGitLabリプレイスでは主に下記を行いました。 サーバ移設に伴いURL以外全部変えた レガシーな環境で運用されていたGitLabを全てDockerコンテナに載せた MySQLからPostgreSQLに移行 以上を1時間弱のメンテでやりきった 構成 ざっくり書くと、SSL終端のフロントサーバのみ同じで、それ以外のバックエンドを全部変えました。 旧 APサーバ Debian Wheezy CPU: Intel Xeon E5-2640v2 * 2 Memory: 40GB Disk: 64G + 512G MySQL兼Redisサーバ Debian Wheezy CPU: Intel Xeon X3430 Memory: 8GB Disk: 256G M
はじめまして、サーバサイドエンジニアの立木です。 特定業種向けポータルサイトやスマートフォンゲーム開発などを経て、昨年3月に入社し、現在はANDPADの開発に従事しています。 アンドパッドでは、技術顧問をして頂いてる三谷(mita2)さんによる、データベースに関する勉強会が定期的に行われております。 tech.andpad.co.jp 先日もデータベースの観点から、Webアプリケーションのパフォーマンスをいかにして監視し、改善していくかという勉強会を開催していただきました。 今回はその勉強会について気になったポイントをまとめてみたいと思います。 当日の資料 概要 ANDPADの現状について分析 Datadogによる分析手法 よくある改善パターン 質疑応答 ANDPADの現状について分析 Webサイトのパフォーマンスは大事当たり前ですが、Webサイトにとってパフォーマンスはとても重要です。
内容 らくがき記事、RDSでダウンタイムなしの24-365構成ってどうすればと思い書いている記事です。 とりあえずはRDSでメンテナンスやアップデート処理が走る時に、サービスダウンするのか否かを整理した資料となります。 RDS(MySQL)の整理 機能概要 最大 64 TiB のデータベースサイズをサポート 汎用インスタンスクラス、メモリ最適化インスタンスクラス、およびバースト可能パフォーマンスインスタンスクラスをサポート 自動バックアップとポイントインタイムリカバリをサポート。 単一のリージョン内または 5 つのリードレプリカのクロスリージョン内で、インスタンスごとに最大 15 個のリードレプリカをサポート 可用性と耐久性 3種類のオプションが選択可能 単一DBインスタンス スタンバイインスタンスのない単一の DB インスタンスを作成します。 マルチAZ DBインスタンス 別のアベイラビ
AWS News Blog New – Fully Managed Blue/Green Deployments in Amazon Aurora and Amazon RDS When updating databases, using a blue/green deployment technique is an appealing option for users to minimize risk and downtime. This method of making database updates requires two database environments—your current production environment, or blue environment, and a staging environment, or green environment. Y
概要 原著者の許諾を得て翻訳・公開いたします。 英語記事: avoid OR for better PostgreSQL query performance - Cybertec 原文公開日: 2018/05/07 著者: Laurenz Albe サイト: CYBERTEC -- データサイエンス分野でのPostgreSQLサポートやコンサルティングを行っている企業です ※挿絵は原著者自らによるものです。 生きるべきか『OR』死すべきか、それが問題だ」 「帰れ!」「非効率!」「同義反復!」 © Laurenz Albe 2018PostgreSQLクエリのチューニングは私たちCybertecの日常的な業務ですが、チューニング中にクエリにORを1つでも見つけた瞬間、恐ろしさに身の毛もよだつ思いがします。たいていの場合、ORはクエリのパフォーマンス低下の原因となるからです。 言うまでもないこ
こんにちは。MackerelチームでCRE(Customer Reliability Engineer)をしているid:syou6162です。 CREチームではカスタマーサクセスを進めるため、最近データ分析により力を入れています(参考1, 参考2)。データ分析を正確に行なうためには、データに関する正確な知識が必要です。今回はより正確なデータ分析を支えるためのメタデータを継続的に管理する仕組みについて書いてみます。 データに対する知識: メタデータ データ分析を正確に行なうためには、データ自身に関する知識(=メタデータ)が必要です。例えば、Mackerelのデータ分析タスクでは以下のような知識が必要とされることが多いです。 このテーブル / カラムは何のためのテーブルなのか 似たようなカラムとの違い 集計条件の違い、など データがどのような値を取り得るか SELECT column, COU
概要 DBMS で広く利用されている B+ tree には様々な variant が存在するが、B-link tree もその1つ。 シンプルなラッチプロトコルで並行アクセスをさばけるよう、リーフノード以外のノードにも右の隣接ノードへのポインタを持たせた構造となっており、PostgreSQL で使われていることでも有名。 この記事では主にこの B-link tree に焦点を当てる。 B+ tree 全般やその他インデックス技術自体に興味がある場合は「最強DB講義 #10 いまどきのデータベース索引技術(石川佳治 教授)」の講義資料を読むのがおすすめ。 B-link tree 理解する上で必須な知識「ラッチ」 「ラッチ」というのはいわゆるロックのことだが、DB においては「ロック」というとトランザクション分離のための高価な(数千CPUサイクルを要する)処理を指すことが多く、「ラッチ」という
この記事について Djangoを使用する際に実践開発に近いフローを簡単に再現します。 「Djangoを勉強しているけど、実務での開発はどうなっているでしょう」という方の参考になれば嬉しいです。 また本記事の内容は最善とは言えませんので、ぐれぐれもご容赦ください。 本記事の環境 python3.7.1 Django 2.1.5 PyCharm 先ずは設計から Explicit is better than implicit. 暗示するより明示するほうがいい。 --pythonの禅 何かを作る前に先ず頭にあるアイディアを具現化しましょう。 いかに簡単そうなものでも設計図があった方がいい。 特に会社のプロジェクト、制作途中、新しくメンバーが入ってくることがよくあります。 設計図があれば、プロジェクトを理解するための時間が短縮されます。 今回のデモは簡単なスクール学生管理システムと設定します モデ
こんにちはあんどう(@t_andou)です。 今回はKubernetesを使って並列処理させた記録です。 まだ「とりあえずそれっぽく動くまで試してみた」という段階で、kubernetesを理解できてはいないので自分用のメモを公開しているという認識でご覧ください。 間違っている部分や、よりスマートなやり方がありましたらご指摘いただけると幸いです。 この記事の概要 機械学習に使う特徴量の作成で1週間かかりそうな処理を10分くらいで終わらせられないかと考え、GKE(=GoogleのKubernetes環境)を使い試行錯誤した記録です。 今回は一部失敗して完了時間が1.5時間になったものの、設定を上手く出来れば15分程度で終わる見込みです。 対象読者 ・Kubernetesの概要は知っているくらいのレベルの人 ・KubernetesのJobを使った並列処理をしたい人 目次 この記事の概要 対象読者
こんにちは ハタ です。 Mirrativのインフラ内で実際に開発・運用している内製のRedisサーバについてお話したいなと思っています。 前回の記事 は、今回紹介する内製Redisサーバで起きたメモリリーク対策に関するお話しとなっておりますので、もし未読であればあわせて読んでいただければと思います。 今回はなぜ Redis サーバを内製することにしたのかの経緯や実装についての簡単な紹介が出来たらなと思っています Redis 導入の経緯 課題感: 揮発しないでほしい 課題感: 生存時間が短いデータを保持したい 課題感: 日次データをなんとかしたい 候補 Redis Cluster のヨシアシ: slot 管理 Dynomite のヨシアシ: sharding/replication radisha = Raft + Redis + HA Raft クラスタ コマンドとデータストア レプリケ
Free and open source Free to use for any purpose, source code available under MIT license Cross database Supports MySQL, PostgreSQL, MS SQL, MongoDB, SQLite and others
CX事業本部@大阪の岩田です。 RDS Proxyを利用するとRDS ProxyにプールされたDB接続を複数のDBクライアントで使い回すことができ、限られたDB接続を効率的に利用することが可能になります。しかし複数のDBクライアントが安全にDB接続を共有できない場合、RDSProxyはコネクションプール内のDB接続を特定のDBクライアントに対して固定してしまいます。これが「ピン留め」と呼ばれる現象で、このピン留めが発生するとRDS Proxyを利用するメリットが失われてしまいます。 このブログでは「ピン留め」を回避するための基本的なパラメータ調整についてご紹介します。 環境 今回利用した環境です こちらのブログとほぼ同様の設定にしてクライアントからの同時接続数が実質1に制限されるようにしています。 RDS for PostgreSQL 11.8-R1 インスタンスクラス db.t3.mic
SREの菅原です。 この記事はカンム Advent Calendar 2022の4日目の記事になります。 少し前にサービスで使っているPostgreSQLをRDSからAuroraに移行しました。 Auroraに移行するため色々と作業を行ったのですが、その中でAuroraの性能を測るために行った負荷テストについて書きます。 pgbench まず最初にpgbenchを使って、単純なワークロードでのRDSをAuroraの性能差を測ってみました。*1 以下がその結果です。 MySQLで同様のテストをmysqlslapを使って行ったことがあって、そのときは概ねAuroraのほうが性能が高かったので、同様の結果になると考えていたのですが、RDSのほうが性能が高い結果になったのは予想外でした。 ただAuroraのアーキテクチャを考えると、pgbenchのような細かすぎるトランザクションの場合はRDSのほ
AWS Compute Blog Using Amazon RDS Proxy with AWS Lambda Update – June 30, 2020: Amazon RDS Proxy support for MySQL and PostgreSQL is now generally available. Update – April 8, 2020: We have announced Postgres compatibility with the Amazon RDS Proxy. Version 10.11 and 11.5 are supported in the preview. The AWS Serverless platform allows you to build applications that automatically scale in response
この記事は freee Developers Advent Calendar 2021 の23日目の記事です🎄 freee の DBRE チームに所属している caterpillar です. なんだか大きなデータベースを眺める仕事をしています. 突然ですが, pingcap/parser を使って SQL を簡単に解析していきたいと思います. Go 製 の SQL Parser で, MySQL への高い互換性を謳う TiDB で利用されています. この parser の嬉しい点はこんな感じです. シンプルで使いやすい TiDB に利用されていることから, ある程度結果を信頼できる mask 済 SQL もおおよそ構文解析可能 3つ目について, mask済の SQL は select * from users where id = ? のように一部が別の文字に置き換わっているものを指しま
SREチームの安達(@adachin0817)です。今回はMENTA、Lancers Creative、Lancers Agencyでマスキングした本番環境のデータをStgや開発環境のMySQLコンテナへ毎週リストアする仕組みを実装しました。実際にここらへんは運用をしていく中で一苦労されている方も多いのではないでしょうか。それではまず背景と、実装するに当たっての活動含めてご紹介できればと思います。 背景 今回はMENTAを例にしています。各サービスの開発環境はDockerを利用しており、本番とStg環境はTerraformで管理しています。カラム追加ではマイグレーションを実行することでサンプルのスキーマファイルを投入して開発をしているのですが、たまに開発環境で動いていたソースがStgや本番で動かないといったことで開発効率が下がることが見受けられます。開発メンバーにとってはより本番環境に近い
気付いたらもう9月ですね。 最近、AWS Lambdaでいろいろと遊ぶ機会があったのでメモとして残します。 はじめに とあるセキュリティゲームの運営用に、SeleniumでWebスクレイピングをやっているRubyのスクリプトをEC2で運用していたのですが、Headless Chromeを扱うため大量に起動するとメモリ食っちゃうし、スケールしようにもEC2インスタンスのAutoScaling組むのもちょっとなあ。とか、インスタンスの起動まで待ってられないからある程度多めにインスタンスを実行したりするのも余分にコストが。。。 1実行に15分もかからないスクリプトだし、ということでLambdaに移行することにしました。 Lambda Layerについて Headless Chromeを扱う場合、単純にFunctionのデプロイパッケージにバイナリを含めると50MBを超えてしまうため、Lambda
こんにちは。id:shallow1729です。最近Database Reliability Engineerというお仕事を始めたのでデータベースの勉強をしたりMySQLのソースコードを読んだりしています。仕事でMySQLが標準で用いているInnoDBのソースコードを読む機会があったのでなんかアウトプットしたいなと思いつついきなりコアな話するのもなって思ったのでざっくりとストレージエンジンの話をしようかなと思います。とはいえストレージエンジンは本当にいろいろな仕事をしていて全部を書こうとするとものすごい事になりそうだった(+僕も分かってない部分が多い)ので、とりあえず第一回はredo logというやつを中心にストレージエンジンを追っていこうと思います。なるべく一般的なデータベースの設計の話を軸に置きつつInnoDBの場合の話もしていこうと思います。読者としてはMySQLのようなリレーショナル
はじめに こんにちは。SRE部ECプラットフォーム基盤SREブロックの石田です。 本記事では、Aurora Serverless v2を本番導入するにあたってどのような検討をし、どのように導入していったか、また導入後に得られた効果について紹介します。 はじめに Aurora Serverless とは 背景 比較検討 比較内容 方針の決定 アーキテクチャ 導入 1. Aurora Serverless v2を手動で構築 2. AWS CloudFormationでProvisioned型Aurora MySQLバージョン3を再構築 3. AWS CloudFormationでAurora Serverless v2に移行 4. 負荷試験・障害試験 負荷試験 障害試験 導入により得られた効果 柔軟なスケーリング インフラコスト 最後に Aurora Serverless とは Aurora
注意 この記事の実験は実際の運用を正確に反映していない恐れがあります(コメント欄の @hmatsu47 さんの投稿を参照)。 実務のアプリケーションでは異なる結果になる可能性もあるので、本記事の内容はあまり鵜呑みにせず参考程度に留めておいてください。 ※「実務に近い環境で実験してみた」という投稿もお待ちしています! はじめに データベース(この記事ではPostgreSQLを対象とします)の主キーは1,2,3のような連番の整数値を主キーにするSERIALと、"00009236-b73c-4338-8ebd-e1f6c4f4fdd8"のようなランダムな文字列を主キーにするUUIDがあります。 それぞれメリットとデメリットがありますが、パフォーマンスについてはどうでしょうか?なんとなくSERIALの方がシンプルなぶん、速そうなイメージがありますが、実際はどうなのか調べてみました。 実行環境 Ma
オープンソースのリレーショナルデータベース「PostgreSQL 15」正式版がリリースされました(日本語版のプレスリリース)。 News: PostgreSQL 15 Released! https://t.co/af3E117bts — PostgreSQL (@PostgreSQL) October 13, 2022 ソートが最大で400%速度向上 PostgreSQL15ではインメモリとディスク上のソートアルゴリズムが改善され、どのデータ型をソートするかによって性能差はあるとされますが、ベンチマークでは25%から400%の速度向上が示されました。 count()、rank()、row_number()、dense_rank()などのウィンドウ関数でも速度が向上しています。 ライトアヘッドログ(WAL)ファイルでLZ4とZstandard (zstd) の圧縮をサポートを追加したこと
はじめに MySQL をビルドする ストレージエンジンを自作する Example エンジンをベースにする handlerton の作成とインスタンス化 テーブルを作成する 余談・気になったところ テーブルを開く INSERT の実装 ha_tina の存在 テーブルスキャン store_lock の実装 external_lock の実装 rnd_init の実装 info の実装 extra の実装 rnd_next の実装 おわりに はじめに 卒論書くのに飽きてきて何かやりたくなったので急にストレージエンジンを書くことにしてみた。 MySQL のストレージエンジンを実装していく中で、色々できるかなと思っていたけど、やってみると MySQL の内部実装について色々知らないといけないことが多くインデックスとかトランザクションとかそういうところは実装できなかった。 github.com My
こんにちは、Yakumo兼コネクト支援チームの@ueokandeです。 サイボウズには体験入部という制度があり、数週間〜数ヶ月の期間、他チームの業務を体験できます。 自分もこの制度を使い、1ヶ月ほどGaroon開発チームを体験してきました。 自分はこの期間で、Garoonの大規模なデータベースを安全にマイグレーションするための仕組みの設計と、そのプロトタイプを実装しました。 背景 Garoonはサービスのアップデートと同時に、データベースのマイグレーションを実行します。 ここでいうマイグレーションは、主に2つの処理があります。 テーブルスキーマの更新。ALTER TABLEによるカラムの追加、削除など。 データの変換。既存レコードのデータ編集など。 Garoonはメンテナンスウィンドウを設けてバージョンアップを実施します。 このバージョンアップが毎回確実に成功すればいいのですが、実際はそれ
MySQL 誕生25周年 らしいです。めでたい! 25年、1つのソフトウェアが継続しているってすごい! max_connections について データベースを使っている開発者から「最大までどれぐらいコネクション数を増やせるのか」という質問を良くもらいます。 最大コネクション数(max_connections) の設定値を超えてしまい、too many connections エラーが出る。 max_connections を見直すとして、「じゃあどこまで大きくしていいのか?」と不安になるのはわかる。 以下の話は、コネクションプールを使っている前提のお話。 単にコネクション数が増えるだけでは、負荷は増加しない 単にコネクション数が増えるだけでは、DBサーバの負荷はあまり変化しない。 特にMySQLはスレッドモデルで実装されており、(プロセスモデルのデータベースと比較して)大量にコネクション
補足説明: MySQLには、バージョン5.7から「JSONデータ型(JSON Data Type)」と呼ばれる概念が登場しています。これにより、JSON型を直接入れられるカラムを作成できます。 便利な一方、一般的なRDBの正規化を崩すことになりますので、仕様には注意が必要です。詳しくはこちらをご覧ください。 リンク WPJ もう知ってた? MySQL 5.7でNoSQLっぽくJSONデータを扱う方法 MySQL 5.7では、JSONデータを「JSON型」としてネイティブで扱えます。サンプルを見ながら、基本的な使い方を確認しましょう。 ※本記事は2016年5月31日に掲載した記事を一部再編集して更新したものです。執筆時点の技術情報をベースにしています。 「SQL vs NoSQL: The Differences」で紹介したように、SQLとNoSQLの境界線は、両言語が他方の特徴を取り入れる
【Unit4 ブログリレー6日目】 こんにちは、エムスリーエンジニアリンググループの福林 (@fukubaya) です。 最近まで開発していたm3ラウンジでは、goからRDBを利用していました。 m3ラウンジでは、SQLの組みやすさやテストのしやすさの観点で検討した結果、goquを採用しましたので、 そこで得られた知見とその実装例を紹介します。 これから試してみる方(と将来m3ラウンジの開発に新たに入ることになったメンバー)の参考になるように、サンプルコードも説明も多くなってしまいかなり長いです。 お時間ある時にお読みいただければ。 名古屋城は、日本の城のひとつ。尾張国愛知郡名古屋(現在の愛知県名古屋市中区本丸・北区名城)にある。本文には特に関係ありません。 m3ラウンジ goqu 実例 modelの構造体 mapper mapperの実装 goquのSQLの結果から構造体へのマッピング
こんにちは。最近リモートワーク用にマイクを買ったソフトウェアエンジニアの福間(fkmy)です。 先月、ANDPADのデータベースの技術顧問をして頂いてる三谷(mita2)さんによるロックの基礎編)〜について勉強会を開催しました。今月はロックのDDL編について8/4(月)に勉強会を実施しました。重要な箇所をピックアップします! また今回も在宅勤務期間中のためオンライン開催となり当日は16名が参加していました。 内容 当日の資料はこちらになります。 DDLについて DDLとはData Definition Languageの略称でデータ構造を定義するための言語のことです。SQLではCREATE文、DROP文、ALTER文、TRUNCATE文が該当します。 DDLの仕組みと改善の歩みについて MySQLのALTER TABLEの初期実装 新しいテーブル定義のテーブルにデータコピーする 実行中は書
本記事は、『Software Design 2019年8月号』の第2特集「ゲームを題材に学ぶ 内部構造から理解するMySQL」をWeb掲載用に再編集したものです。 本記事のテーマを、より基本的なところから丁寧に解説した『SQLの苦手を克服する本 データの操作がイメージできれば誰でもできる』が2019年8月26日に発売予定です。本記事と併せてご活用ください。 ゲーム開発におけるRDBMSの役割 RDBMS(Relational DataBase Management System)は業務システム(以下、業務系)で多くの実績を作ってきました。一方でゲーム分野(以下、ゲーム系)では、RDBMSはほとんど使われていませんでした。ネットゲームではなく、スタンドアローンのゲームが中心だったので、プレーンなテキストやバイナリ形式でデータを保存していたからです(スタンドアローン環境向けのSQLiteもまだ
はじめに 皆様こんにちは。OPTiM新卒1年目エンジニアの青木です。 前回は早押しボタンなんかを作っていました。 tech-blog.optim.co.jp 今回は、PHP フレームワークの Laravel を、PostgreSQL と Vue.js と組み合わせて作成する TODO アプリを通して紹介します。 このフレームワークらはこちらの記事でも密かに利用しています。 tech-blog.optim.co.jp OPTiMではあまり利用されていませんが、一部のアプリケーションで実利用されている箇所もございます。 PHPは昔のイメージからかなり避けられていていますが...今のPHPとそのフレームワークはすごく発展していてとても使いやすいので是非使っていただきたい!という気持ちがあります。 ですが、現状はあまり利用していただけなくて個人的には悲しい気持ちでいっぱいです。 そんなPHPですが
A generation of pioneers (Doug Engelbart, Ted Nelson, Alan Kay, and many more) saw the computer as tool to augment human problem-solving by giving people power over information. Today, that information mostly remains siloed across tools. Take cloud-based document editors, where pages are their smallest atomic unit. Information is locked inside of pages and files and folders — that’s reminiscent of
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く