TSKaigi 2024 ref: https://tskaigi.org/talks/tockn
こんにちは。技術部プラットフォームグループのharukinです。 この記事では、私たちが提供するネットショップ作成・運用のためのECプラットフォーム「カラーミーショップ」のデータベースを、Amazon RDSのブルー/グリーンデプロイを利用し、MySQLのバージョン5.7.38から8.0.35へアップグレードした経験についてご紹介します。カラーミーショップにおいてはこれが初の試みでした。Amazon RDS固有のファーストタッチレイテンシーの解除方法や、ダウンタイム時間の計測についてもお伝えします。 Amazon RDSのブルー/グリーンデプロイを活用するメリットは、本番環境に準ずるステージング環境を構築し事前検証が可能であることです。ステージング環境は約1分で本番環境に昇格させることができ、昇格時に許容ダウンタイムを超えたり、レプリケーションやインスタンスの問題が生じた場合は、自動的にプ
シンプルフォーム株式会社でインフラエンジニアをしている守屋です。 本記事では Aurora MySQL の OOM(メモリ不足)エラーについて、原因となるクエリを特定するために役立つ Tips を弊社での実例を交えてご紹介します。 発端 突如 Slack に鳴り響く不吉な通知。 「パターン青!障害です!!」 どうやら本番環境の Aurora クラスターがフェイルオーバーしてアプリケーションが DB コネクションエラーを引き起こした模様です。幸いインスタンスは冗長化していて Aurora のフェイルオーバーは高速であるため、ユーザー目線では瞬断が発生した程度の比較的影響が小さめな障害に留まりました。しかしインフラエンジニアとしては捨ておけない状況です!早速原因の調査を始めました。 フェイルオーバーの原因 結論から言うとメモリ使用量がスパイクして OOM エラーが発生したことが原因でした。根拠
概要 Web バックエンドのテストコードを書く場合、その多くは DB に依存していることが多いです。 DB 関連のテストは、テストデータの準備やテストケース毎の DB 処理化を適切に行うことが重要ですが、手間がかかる場合あるため、Mock で擬似的にテストしてしまうことも多いかと思います。 ただ、Mock を使ったテストは本質的な問題を検知できない意味のないテストになってしまう可能性があり、可能な限り DB の Mock を行わずに、実際の DB を使用してテストすることが望ましいと考えています。 本記事では、pytest、sqlalchemy、PostgreSQL を使った場合に、テストケース毎に DB を簡単に初期化しつつ、テストケース毎の前提データ登録も簡単うことでテスト開発体験を向上させる方法を紹介します。 前提環境 本記事では、以下の環境を前提として説明いたします。 python
SNSを通じた「ギブ&テイク型情報収集術」と、後悔しない技術選定を叶える方法【DBエンジニア|こば】 2024年5月8日 データベースエンジニア/DBソムリエ こば -Koba as a DB engineer-(@tzkb/小林隆浩) 基盤担当のエンジニアとして様々なプロジェクトで経験を積み、中でもデータベースに関する設計、運用、トラブルシューティング等を専門とする。得意とするDBMSはOracle DatabaseおよびPostgreSQL。オライリー社刊行・書籍「詳説 データベース」監訳者。itmediaにてクラウドネイティブなDBやNewSQLに関する連載を持つ。 X Zenn Qiita connpass SpeakerDeck 技術や業界など仕事についての情報収集の基盤として多くのエンジニアを支えていたTwitter(現X)が、以前とは異なる姿となってゆく今、必要な情報を過不足
導入 こんにちは、株式会社ナレッジセンスの須藤英寿です。普段はエンジニアとして、LLMを使用したチャットのサービスを提供しており、とりわけRAGシステムの改善は日々の課題になっています。 本記事では、Pinterest社のエンジニアチームが紹介していた、実運用環境におけるText-to-SQLの構築方法に関する記事の紹介をします。 Text-to-SQLを実際の運用レベルで実現するための手法が解説されているので、その内容を解説、そして考察していきたいと思います。 なおこの手法には特に名前などは設定されていなかったので、以降Pinterest社の提案するText-to-SQLをPinterest Text-to-SQLと呼称します。 サマリー Pinterest Text-to-SQLは、RAGのシステムを最適化することで 検索に必要なTableのより正確な抽出 実際に使用されている値に準拠
本記事は最近読んだ次の記事からインスピレーションを得ました。 RのdplyrやPythonのpolarsのようなパッケージでデータフレームの操作に慣れている人ならば、Rのdbplyrを使うことで、バグが少ない上に早くサブクエリを構築することができます。 何千回も実行するSQLならば時間をかけてチューニングされたSQLを構築したほうがよいと思いますが、分析の試行錯誤のサイクルを早く回したい場合など数十回ぐらいしか実行しないSQLならば、dbplyrから実行したほうがよいでしょう。 それではざっくり元記事に沿って例を説明します。 カラムのサブクエリ 大分類(major_category)で絞って、該当する作品を表示する例をお借りします。 まず素直にms_categoriesテーブルから該当するcategory_idを抜き出しておいて、%in%で求めると、 category_id_fiction
AIにフォーカスしたRDB「Oracle Database 23ai」正式リリース。AI用のベクトルサーチなど可能に オラクルはAIにフォーカスしたデータベース「Oracle Database 23ai」の正式リリースを発表しました。 Oracle Database 23aiは、昨年(2023年)9月にリリースされた「Oracle Database 23c」にAI関連をはじめとする新機能を追加した上で、「23c」の名前を変更したものだと説明されています。 参考:[速報]Oracle Database 23cが正式リリース。JavaScriptストアドプロシージャ、DBに自然言語で問い合わせなど新機能。Oracle CloudWorld 2023開幕 Bring #AI algorithms to where your data lives with Oracle Database 23ai
PCを使っていると、過去の操作内容やブラウザで閲覧していた情報を思い出したくなるタイミングが頻繁に発生します。そんな時に役立ちそうなPC操作記録アプリ「Windrecorder」がオープンソースで開発されています。 GitHub - yuka-friends/Windrecorder: Windrecorder is a memory search app by records everything on your screen in small size, to let you rewind what you have seen, query through OCR text or image description, and get activity statistics. https://github.com/yuka-friends/Windrecorder I made an o
昨年末から待っていた、ベクトル検索機能を搭載した Oracle Database 23c のアップデート 23.4.0(どういうわけか 23c ではなく 23ai になったらしい…)がようやくリリースされました。 ベクトル検索のドキュメント「Oracle AI Vector Search User's Guide」を見てみると、言語モデルに問い合わせてベクトル表現を取得したり、モデル自体をデータベースに格納したり、SQL でプロンプトを投げてみたりと、SQL 世界で RAG を実現しているようです。 とはいえ、RAG のフローをアプリ側で実装している多くのエンジニアの方にとって、データベースに求めていることはスケーラブルなベクトル検索(と SQL 処理との組み合わせや、確立されたデータベース運用)なのではないかと思います。 そこで、この記事では、ベクトル検索に的を絞って、最速で試してみる手
最近、LLMにWeb Backendを書かせて遊ぶ、Hanabiというサービスを作っています。その開発過程で、前に試したLLMをAPIとして振る舞わせるアプローチを再検討したので、記事としてまとめました。 一年ちょっと前、私はChatGPTをWebフレームワークにしようと試みました...が、残念ながら全く実用的ではありませんでした。しかし、あれから一年、LLMは目覚ましい進歩で進化を遂げました。価格は下がり、速度も上がり、記憶容量の増加やRAGの発展など、もはや別物レベルで進化しています。 いまならもうちょっと実用的なヤツが作れるんじゃねってことで、色々な手法を面白がった再検討したまとめです。 余談ですが、一年前はLLM=ChatGPTという状況でしたね...懐かしい。ちょうどvicuna13Bが出た頃ですかね? ↓去年の記事(できれば読んでほしい)↓ 出来たもの 全部プロンプトに入れちゃ
SQL実行の流れ まずはSQLがどのような流れで実行されるのかを見ていきます。 SQL実行の流れは大まかに捉えると以下のようになります。 パーサ パーサでは、ユーザーから送信されたクエリを受け取り、その文法的な正確さを検証します。SQLクエリが正しくフォーマットされているか、必要な構文要素が全て含まれているかをチェックし、例えばFROM句で指定されたテーブルが存在するかどうかも確認します。 文法的なエラーがある場合、例えばカンマの欠落や存在しないテーブルの参照など、クエリはエラーとして返されます。 エラーがない場合は、クエリは「抽象構文木」というデータ構造に変換されます。これにより、データベースはクエリをより効率的に解析し、次の処理ステップに進めることができます。 オプティマイザ SQLクエリがパーサを通過した後、次にクエリの最適化を行うのが「オプティマイザ」です。オプティマイザの主な役割
切り替える理由 自社の主力製品で利用している技術(WebRTC / WebTransport)がブラウザベースのため TypeScript を利用する Go を採用したのは sqlc が使いたかったという理由 sqlc-gen-typescript が出てきたのでもう Go を使う理由がなくなった 自社サービスチーム全員が Go にまったく興味が無い sqlc 自体は便利 そもそも自社に Go への興味がある人がいない 自社サービスの規模ではボトルネックになるのはデータベースであって言語ではない もしアプリでスケールが必要なときは Rust や Erlang/OTP に切り替えれば良い コネクションプールは PgBouncer を利用すればいい TypeScript からは 1 コネクション 1 接続で問題無い どうせフロントエンドでは TypeScript を書く 自社では React
Firebaseのセキュリティルールの設定を誤っていることが原因で数百のサイトが平文パスワードや機密情報を含む合計1億2500万件のレコードを公開してしまっているとセキュリティエンジニアの「Logykk」「mrbruh」「xyzeva」という3人がブログに投稿しました。 900 Sites, 125 million accounts, 1 vulnerability - env.fail https://env.fail/posts/firewreck-1/ セキュリティエンジニアの3人はChattr.aiというサービスでFirebaseの設定が間違っていることを発見しました。Chatter.aiではウェブサイト上の正規ルートで登録するとアカウントの権利が適切に制限されるものの、FirebaseのAPIを直接使用してアカウントを作成するとFirebase上のデータベース全てに対する権限が取
ブラウザベースのデザインツール「Figma」のデータベース(DB)は2020年以来100倍に拡大しました。当初は単一のPostgreSQLで構築されていたDBをどのようにして分散システムへと移行したのかについて、公式ブログで詳しく説明されています。 How Figma's Databases Team Lived to Tell the Scale | Figma Blog https://www.figma.com/ja-jp/blog/how-figmas-databases-team-lived-to-tell-the-scale/ Figmaではまず、「Figmaファイル」や「組織」などテーブルごとにDBを分割する「垂直分割」を行いました。2022年までに10個のパーティションに分割し、それぞれのパーティションを監視することでスケーリングの優先順位を付けたとのこと。 Figmaの利
こんにちは。SUZURI事業部の@kromiiiと申します。 私のメインの業務はWebアプリケーションの開発ですが、大学院時代のスキルを活かして並行してデータ分析業務も行っています。 データ分析業務ではデータベースのクエリを書くことが多いのですが、私自身SUZURI事業部に配属されたばかりで、テーブルの名前やリレーションを覚えるのが大変でした。そこでクエリの設計を自動化するツールをSlackに導入しました。 その名も tbls-ask bot です。どのようなものか先に見てみましょう。 ユーザーはSlackでメンションする形で、どのようなクエリを実行したいのか自然言語で入力します。 メンションされるとSlack botが起動し、どのDBスキーマを利用するかを尋ねます。 ユーザーがDBスキーマを選択すると、自然言語からSQLクエリを生成し、Slackに返答します。 今回はパブリックに公開する
マーケティングテクノロジーの情報やノウハウ・TIPS、エクスチュア社の情報を発信。【ブログネタ募集】ご興味のある分野を教えてください!ご要望の内容を記事に起こします!メニューの「ブログへの」リクエストよりお送りください。 menu こんにちは、喜田です。 いままでSnowflakeのライトユーザーで一部機能だけに特化して触っている状態でしたが、最近はData Superheroes 2024になったこともあり、いままで関わりの薄かった製品領域も調査したり、海外リージョンでしか出ていないプレビューを触ったりしています。 そのうちの一つがCopilotで、いまは北米など一部リージョンでのみパブリックプレビュー中の、Snowflakeコード開発が一段と捗るAIおしゃべり機能です。 この右側のパネルがCopilotとのチャット。出力が多くてチャットっぽくないですが、上から会話が続いております。 C
Oracle Database 23ai がリリースされました。このデータベースのリリースでは AI に重点を置いているため、データベースの名前を Oracle Database 23c から Oracle Database 23ai に変更することにしました。この Long-Term Support Release には、Oracle AI Vector Searchと、データによるAIの使用の簡素化、アプリ開発の加速、ミッションクリティカルなワークロードの実行に焦点を当てた300を超える追加の主要機能が含まれています。 ⚫︎ AI and Converged Data: Oracle's Strategy for Data Management Larry Ellison と Juan Loaiza が、Oracle Database 23ai の GenAI 戦略と、Oracle D
これはなに ども、レバテック開発部のもりたです。 今回はSQLのサブクエリについてまとめます。仕事でクエリを書く際、サブクエリは頻出の構文だと思うんですが、同時にサブクエリの書き方を完全に理解しているよという人は案外少ないのではないでしょうか?[1] 実際、MySQLの公式ドキュメントを見ると12ページくらいを割かれており、意外と奥深いのがサブクエリです。使いこなせると便利ですし、何よりちょっとSQLのコツみたいなのがわかって面白いよ、ということで記事にしてみました。 前提 この記事は以下の前提を含んでいます。 環境 MySQL8.0系 読者の知識 なんとなくサブクエリが書ける けど相関サブクエリとかになると「あーっ」つってGoogle meetを閉じてしまうくらいのレベル感 記事のボリューム 18,000文字 おれの卒論が20,000文字だった マサカリ 間違ってたら投げてくれ〜〜 それ
WEBアプリケーション開発者です。 特別セキュリティのスペシャリストになりたいというわけでないですが、アプリケーション開発者として徳丸本に記載されている内容レベルのセキュリティ知識はあります。 システムのセキュリティに関してはベンダーの脆弱性診断を通して運用しており、個人的にはセキュリティに関して何か困ったことがいままでありません。 ただ、ふと考えてみると「情報漏洩やサイバー攻撃が発生した際などの有事にどのような行動をとるべきか」という観点ではあまり自信がないなと感じました。社内でもそのような場合の指針が整っているわけではないです。 徳丸先生は、一般的な開発者には最低限どのレベルのセキュリティ知識を求められていますか? 回答の難しい質問ですが、ここは本音をさらけ出したいと思います。 私が「安全なWebアプリケーションの作り方(通称徳丸本)」を出したのが2011年3月でして、それから13年以
The recent discussion about AIX support in PostgreSQL (as of now removed in PostgreSQL 17) led me to look through the project’s history, to learn what platforms we have supported when. In this context, “platform” really means operating system. One useful proxy is looking at the files in src/template/, because every supported platform needs to be listed there. There are other dimensions, such as wh
1. Introduction Every SQL database engine works in roughly the same way: It first translates the input SQL text into a "prepared statement". Then it "executes" the prepared statement to generate a result. A prepared statement is an object that represents the steps needed to accomplish the input SQL. Or, to think of it in another way, the prepared statement is the SQL statement translated into a fo
最近「ああ、これ前職でも前々職でもやったことあるなぁ」という仕事があった。データエンジニア(やその関連職種)として働き始めて約5年、3社でフルタイムとして働いてきて「このスキルは業界や組織規模が変わってもデータエンジニアとしてスキルを求められることが多いな」と感じたものをまとめてみることにした。棚卸し的な意味はあるが、特に転職用などではないです。 前提 どこでも必要とされたスキル データマネジメントに関する概要レベルの知識と実行力 セキュリティや法令に関する知識 事業ドメインに関する興味関心 他職種とのコミュニケーション能力 コスト管理 / コスト削減のスキル ソフトウェアエンジニアとしてのスキル DataOpsやアラートのハンドリング能力 分析用のSQLを書く力 古いテーブルやデータパイプラインを置き換えていくスキルや胆力 あるとやりやすいスキル 関連部署の動きを何となく把握しておく力
DBMSのメモリ管理について データベース管理システム(DBMS)の設計では、大量のデータと複雑なクエリを処理するために、ハードウェアの特性を最大限引き出すことが求められます。 この記事では、DBMSがどのようにメモリを使ってデータアクセスの速度を向上させ、同時にデータの安全性を確保しているのかを解説します。 DBMSと記憶装置の関係について DBMSが使う記憶装置は次の2つです。 HDD HDDは磁気ディスクを使用してデータを記録・読み取りする記憶装置です。その主な特徴は大容量であり、コスト効率が良いことです。DBMSでは、データの永続的な保存にHDDが用いられます。これにより、システムがシャットダウンされた後もデータが保持され、必要に応じて再びアクセス可能となります。 しかし、HDDのデータアクセス速度はメモリに比べて遅いため、リアルタイム処理や高速なトランザクションが求められるアプリ
PGDSAT is a security assessment tool that checks around 70 PostgreSQL security controls of your PostgreSQL clusters including all recommendations from the CIS compliance benchmark but not only. This tool is a single command that must be run on the PostgreSQL server to collect all necessaries system and PostgreSQL information to compute a security assessment report. A report consist in a summary of
クラウドベースのデータウェアハウスサービスを展開する企業のSnowflakeが、トップレベルのエンタープライズ向け大規模言語モデル(LLM)として「Snowflake Arctic」をリリースしました。Apacheライセンス バージョン2.0で提供されるオープンなモデルとなっており、無料で商用利用も可能です。 Snowflake Arctic - LLM for Enterprise AI https://www.snowflake.com/blog/arctic-open-efficient-foundation-language-models-snowflake/ Snowflakeの調査では、企業ユーザーはAIを使用して主にデータ支援やコード支援、検索拡張生成(RAG)を行うチャットボットを作成したい場合が多いとのこと。そこで、Snowflakeは「コーディング能力」「SQL生成能力
Amazon Web Services ブログ リクルートが『スタディサプリ』で Amazon Aurora Serverless v2 を採用。コストを最適化しつつ Aurora の管理工数を大幅削減 株式会社リクルートは、日本国内のHR・販促事業及びグローバル斡旋・販促事業をおこなう事業会社です。リクルートでは、『スタディサプリ』というスマートフォンアプリ、パソコンで利用可能なオンライン学習サービスのデータベースとして Amazon Aurora PostgreSQL を採用しています。 2023 年 5 月にこの Aurora PostgreSQL を Aurora Serverless v2 に変更しました。採用検討から 1.5 ヶ月と短期間で導入を決定しましたが、入念な検証の結果 Aurora の運用負荷を大幅に削減し、サービスの安定運用も実現しています。本ブログは、『スタディサ
【番外編】Excelの知識しかない人をRDBの担当者にする:SQLの知識がなくてもJetBrains AIを利用してRDBをノーコード生成! 企業にとってデータは顧客の次に大切なものであり、その保持・管理・活用方法について各社の担当者は日々、頭を悩ませているところだと思います。 2010年代になってから話題になった「NoSQL」はデータベースの一つの選択肢としてすっかり定着し、2020年代になってからはWebブラウザからデータの入力・閲覧がすべてできてしまう「DBaaS(サービスとしてのデータベース)」とでも呼ぶべき製品も多数出てきました。それらを活用したいところですが、社内で運用しているRDBMSをすぐにやめるわけにもいきません。 これらを保守するには、担当者は最低でもSQLは覚えておかなければならないのですが、教育コストが掛かります。そこで今回は「先輩社員がいなくても、SQLを知らなく
note ではメインデータベースとして Aurora MySQL を採用し、日々発生する膨大なトラフィックを処理しています。Aurora MySQL v2 (MySQL 5.7 互換) の標準サポートは2024/10/31 に終了するため、これを機に v3 (MySQL 8.0 互換) へのアップグレードを行いました。 アップグレードは無事に完了しましたが、いくつかの問題にも直面しました。これらを共有することで、これからアップグレードを検討している方へ参考になればと思います。 事前に検討した課題アップグレード後に致命的な問題が起きたらどうするかv3 へのアップグレード後に v2 へ切り戻すことは容易ではなく、スナップショットなどからの復元が必要になります。データをロールバックすることになるため、ユーザ影響が極めて大きく避けたい事態です。 そのため、基本的に切り戻しはできないという前提でアッ
拙著の一つに『おうちで学べるデータベースのきほん』というデータベース初心者向けの入門書がある。2015年刊行なのでそれなりに年月が経っているのだが、ありがたいことに今でもコンスタントに読んでいただいている。 この本の中で「リレーショナルデータベースのテーブルは関数として捉えられる」という話をしているのだが、ある読者の方からそこがよく分からなかった、という質問をいただいた。ちょうどよい機会なので、少しこの点を補足説明しておきたいと思う。 テーブルが関数だと言うとき、二つの含意がある。一つは集合から集合への写像としての意味、もう一つが述語論理における命題関数としての意味である。一般的にテーブルが関数だという場合は、前者の意味で言われることが多い。こちらは関数従属性や正規形の概念にも繋がっていくから、関係モデルの理解という点でも広がりのあるオーソドクスな解釈だ。拙著でもこの意味で説明している。し
以前に アプリケーションを停止させずにRDBのスキーマ変更する話 を書きました。 developer.feedforce.jp 今日は、その実践編というか、実例として EC Booster というサービスで請求関連テーブルのスキーマを変更した話をしようと思います。 はじまりのテーブル 元々、 EC Booster の請求を管理するテーブルは、このような形でした。 create_table "monthly_charges", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t| t.uuid "shop_id", null: false t.integer "year", null: false t.integer "month", null: false t.datetime "created_at"
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く