並び順

ブックマーク数

期間指定

  • から
  • まで

1 - 40 件 / 3337件

新着順 人気順

SQLの検索結果1 - 40 件 / 3337件

  • 「データエンジニアの市場価値」を上げたい。リクルートグループのニジボックスが“有料級のインプット教材”をつくるワケ - はてなニュース

    「全ての企業のサービスを成長させる」をミッションに掲げ、WebサイトやアプリのUI/UX改善をはじめ、技術力でサービスやプロダクトの成長を支援してきた、リクルートグループのニジボックス。 そんな同社が今注力するのは「データ人材」の育成です。具体的には、BIエンジニア、データエンジニアなど、データ領域でリクルートとともにプロダクトを「共創」できる専門家集団の立ち上げを進めています。その背景には、リクルートでプロダクトのデータ利活用が急速に進んだ結果、「共創」ニーズに対して人材が圧倒的に不足している、という課題がありました。 リクルートグループにおいて、データ実務が担えるエンジニアを、スピーディーに育てなければならない。そのために社内で活用されているのが、「インプットプログラム」と名付けられた新人エンジニアの研修プログラムです。プログラムを修了すれば、リクルートグループの実務で通用する知識やス

      「データエンジニアの市場価値」を上げたい。リクルートグループのニジボックスが“有料級のインプット教材”をつくるワケ - はてなニュース
    • データベースエンジニアのスキルアップ 専門書輪読会とMySQLモブプロの取り組み

      こんにちは。LINEヤフー株式会社でデータベースエンジニアをしている、松浦、中園、大塚、曽根、笠井です。 データベースはLINEヤフーのさまざまなサービスを支える重要なソフトウエアですが、その安定的な運用やトラブルシューティングには、データベースに関する専門的な知識が必要です。 一方で、データベース部門に配属される新卒のエンジニアは、全員が学生時代にデータベースを専門的に勉強しているわけではありません。このような新卒エンジニアは、データベース部門へ配属後、OJTや実際のデータベースの運用業務に携わりながら、データベースに関する専門知識を深めていきます。 今回のブログ記事では、データベースエンジニアとしての専門性を高めるために、部門内で実施している専門書の輪読会、そして、MySQLを題材としたデータベースカーネルのモブプログラミング(以下、モブプロ)の取り組みについてご紹介します。 1. 輪

        データベースエンジニアのスキルアップ 専門書輪読会とMySQLモブプロの取り組み
      • Parquetフォーマット概観 - 発明のための再発明

        Parquetは便利なファイル形式で、列志向のフォーマットとしてはデファクトの1つと言っても過言ではないでしょう。 ですが、jsonやcsvとは違い、ファイルを見ただけでどんな構造かわかるものではありません。 この記事は、Parquetの具体的な構造について記述します。 はじめに この投稿は、Parquetの構造について、バイナリを見ながら確認するものです。 ただし、Parquetの大枠に注目した投稿なので、delta encodingやrun-lengthなど、個別の圧縮方法については取り扱いません。 ※ Parquetの作成には https://github.com/parquet-go/parquet-go を使用していますが、goの知識は必要ありません tldr Parquetは以下の構造を持っています。 ファイルはRowGroupとメタデータに分かれている RowGroupの中に

          Parquetフォーマット概観 - 発明のための再発明
        • インデックスとは何?MySQL(InnoDB)とPostgreSQLのインデックスの違いとは?調べてみました

          はじめに こんにちは。calloc134 です。 前のハッカソンイベントで、UUID をプライマリキーに利用するかどうかの議論がありました。 結果的にはあまりパフォーマンス要件の高くないアプリケーションであったため、プライマリキーとして UUID を採用することにしたのですが、イベント終了後に気になったため、調査を行いました。 今回は、この調査の結果を元に、MySQL と PostgreSQL におけるインデックスの内部構造の違いと、UUID をプライマリキーにする際の問題についてまとめてみたいと思います。 インデックスの概要 インデックスとは インデックスとは、データベースのテーブルに対して、アクセスを高速に行うための指標となる構造のことです。 インデックスとは日本語で索引ですが、まさに辞書の索引のように、アクセスにおいての手助けをしてくれます。 より具体的に解説すると、データベースにお

            インデックスとは何?MySQL(InnoDB)とPostgreSQLのインデックスの違いとは?調べてみました
          • 目的別データベースの実践: PostgreSQL 行レベルセキュリティと DynamoDB Outboxパターン - KAKEHASHI Tech Blog

            カケハシのプラットフォームチームのテックリードとして組織管理サービスと認証基盤を開発している kosui (id:kosui_me) です。今回は、目的別データベースをプラットフォームチームではどのように実践しているかご紹介します。 この記事は秋の技術特集 2024の 13 記事目です。 背景 目的 事例1: PostgreSQL の行レベルセキュリティを活用する組織管理サービス 組織管理サービスとは PostgreSQL の行レベルセキュリティ 行レベルセキュリティを用いたトランザクションマネージャー 行レベルセキュリティの運用上の注意点 事例2: DynamoDB を活用する認証基盤と Outbox パターンの活用 カケハシの認証基盤刷新 DynamoDB で実現する高稼働率の認証基盤 DynamoDB の特性を考慮する CDC と Outbox パターン まとめ 背景 医療の分野で様

              目的別データベースの実践: PostgreSQL 行レベルセキュリティと DynamoDB Outboxパターン - KAKEHASHI Tech Blog
            • GitHub - achristmascarl/rainfrog: 🐸 a database management tui for postgres

              You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

                GitHub - achristmascarl/rainfrog: 🐸 a database management tui for postgres
              • 医薬品検索にベクトル検索を導入したら、デフォで検索ニーズをほぼ満たせそうだった話

                どんな人向けの記事? 医薬品のような難しい検索ニーズにこたえるためにベクトル検索を利用する知見を見てみたい MySQLの全文検索と、ベクトル検索の精度や速度を比較してみたい ベクトルDBとEmbeddingモデルを利用した簡単なベクトル検索の実装方法を知りたい 医薬品の検索ニーズは多様なので、ベクトル検索で解決できるか試したい 1つの医薬品を指す名称は、複数存在するため医薬品検索は意外と面倒な問題です。 例えば、日本人なら頭痛や生理痛、発熱したときに「ロキソニン」を飲んだことがあるかもしれません。この名称は商品の名称ですが、成分の名称は「ロキソプロフェンナトリウム水和物」です。 さらに、ロキソプロフェンには錠剤以外にもテープやパップといった剤形の違いがあります。 そして最後に、ロキソプロフェンを作っている会社は複数あるので、末尾に「トーワ」や「ファイザー」などの組み合わせが存在します。ロキ

                  医薬品検索にベクトル検索を導入したら、デフォで検索ニーズをほぼ満たせそうだった話
                • カーネルにDBMSを載せた分散OS「DBOS」の特徴と利点は? サーバレスでTypeScriptとPythonの実行に対応

                  カーネルにDBMSを載せた分散OS「DBOS」の特徴と利点は? サーバレスでTypeScriptとPythonの実行に対応 マサチューセッツ工科大学(MIT)とスタンフォード大学の研究者によって考案された分散OS「DBOS」が、TypeScriptに加えてPythonの実行に対応したことが発表されました。 DBOSはOS内部にデータベースが組み込まれており、OSやアプリケーションのすべての処理や状態をデータベースが記録します。そのため、アプリケーションやOSが何らかの原因で終了したとしても、処理や状態を失うことなく終了したところから再開できるなどの利点を備えています。 これによりTypeScriptやPythonで耐久性の高いアプリケーションの構築を容易にしています。 DBOS is coming to #Python! Development of the DBOS Transact f

                    カーネルにDBMSを載せた分散OS「DBOS」の特徴と利点は? サーバレスでTypeScriptとPythonの実行に対応
                  • Goのsql.DBは、いつプールに戻しているのか

                    はじめに 鍵を閉め忘れたような気がして心配になるように、リソースを後始末していたか心配になることはありませんか。 「習慣的にdeferでCloseしてるからリークしないはずたけど。あれ?トランザクションはしてなかったかも。ん?Closeないの!?」 Goの標準ライブラリの database/sql で中心となる sql.DB ではデフォルトでコネクションプールが使われるようになっていて明示的な操作は不要です。 ではいったい、どのタイミングでプールに返却されているのか、パターンを整理してみました。 準備 挙動の確認でINSERTやSELECTを実行するため、PostgreSQLに簡易なテーブルを作成しました。 CREATE TABLE shop ( id serial PRIMARY KEY, name text NOT NULL, created_at timestamp with tim

                      Goのsql.DBは、いつプールに戻しているのか
                    • DuckDB雑紹介(1.1対応版)@DuckDB座談会

                      2024年6月に発表した(https://speakerdeck.com/ktz/duckdbza-shao-jie)内容にDuckDB バージョン1.1の変更点を追記した版

                        DuckDB雑紹介(1.1対応版)@DuckDB座談会
                      • トリガーを用いたPostgreSQLのデータ変更検知方法 - RAKUS Developers Blog | ラクス エンジニアブログ

                        はじめに 事前準備 トリガーを使用する方法 補足:トリガーと関数のみ消す方法 まとめ はじめに こんにちは! エンジニア2年目のTKDSです! PostgreSQLでのテーブル変更検知方法について調べました。 今回はトリガーを使用する方法について説明します。 事前準備 DBの準備(compose.yaml) services: db: image: postgres:16.4-bullseye container_name: db environment: POSTGRES_USER: postgres POSTGRES_DB: postgres POSTGRES_PASSWORD: postgres ports: - "127.0.0.1:5432:5432" volumes: - db_data:/var/lib/postgresql/data - ./init.sql:/docker

                          トリガーを用いたPostgreSQLのデータ変更検知方法 - RAKUS Developers Blog | ラクス エンジニアブログ
                        • 医薬品検索でMySQLの全文検索機能を使った話 - KAKEHASHI Tech Blog

                          AI在庫管理の開発チームでバックエンドエンジニアをしている沖です。今回は、AI在庫管理の医薬品検索において、MySQLの全文検索機能を使った話を紹介しようと思います。 この記事は秋の技術特集 2024の 8 記事目です。 今までの医薬品検索では満足できないユーザーがいた なぜMySQLの全文検索機能を採用したのか 全文検索機能を導入する 全文検索インデックスを付与したテーブルを作成する パーサー 照合順序と正規化 全文検索インデックスを使用して検索する データを最適な状態に保つために おわりに 今までの医薬品検索では満足できないユーザーがいた AI在庫管理には、医薬品の在庫一覧画面など、医薬品名で絞り込む画面がたくさんあります。この絞り込み機能を実現するために、これまではSQLのLIKE検索を利用していました。 LIKE検索は、使い慣れたSQLを用いて部分一致検索を実現できる便利な方法です

                            医薬品検索でMySQLの全文検索機能を使った話 - KAKEHASHI Tech Blog
                          • Visual DB

                            Web front end for your database Build data entry forms, sheets, and reports Cut development costs Developing and maintaining internal applications to enter and update records in a database is expensive. Now you can significantly lower costs by using Visual DB instead of developing custom applications. No coding skills? No problem! Visual DB is a productivity application, not a developer tool. As s

                              Visual DB
                            • DMMがMySQLのリプレース先としてGoogle Cloud SpannerとTiDBを比較、採用したのはTiDB。比較内容や結果を語る[PR]

                              DMMがMySQLのリプレース先としてGoogle Cloud SpannerとTiDBを比較、採用したのはTiDB。比較内容や結果を語る[PR] オンラインゲーム、電子書籍、動画配信を始めとする60以上のサービスを提供しているDMM。同社の共通基盤を提供する組織「DMMプラットフォーム」は、オンプレミス上で稼働していたMySQLのリプレース先の検討過程でNewSQLのGoogle Cloud SpannerとTiDB/TiDB Cloudを比較しました。 その比較の結果、採用されたのはTiDB Cloudでした。 比較検討の結果として完成度はSpannerの方が高いとしながらも、なぜ同社はTiDB Cloudを採用したのか、そして実際に運用してどうだったのか。その内容が2024年7月3日に都内で行われたイベント「TiDB User Day 2024」のセッションで語られました。 本記事で

                                DMMがMySQLのリプレース先としてGoogle Cloud SpannerとTiDBを比較、採用したのはTiDB。比較内容や結果を語る[PR]
                              • 「みんなさぁ、データベースって何で学んだ?」単なるSQLやテーブル設計のいろはとかではなく『データベース』そのものの勉強についての質問に有益な情報が集まる

                                𝕏 𝕃(おおきなえる)🌸🐻💿⚒️ @ellnore_pad_267 みんなさぁ・・・ データベースって何で学んだ? あんま学ぶチャンスなくね? そんなことはないか? 単なる SQL やテーブル設計のいろはとかではなく『データベース』そのものの勉強な。 オプティマイザとかその辺の細かい部分の話。 𝕏 𝕃(おおきなえる)🌸🐻💿⚒️ @ellnore_pad_267 > 単なる SQL やテーブル設計のいろはとかではなく『データベース』そのものの勉強な。 オプティマイザとかその辺の細かい部分の話。 この部分読めてない奴が一定数おる????

                                  「みんなさぁ、データベースって何で学んだ?」単なるSQLやテーブル設計のいろはとかではなく『データベース』そのものの勉強についての質問に有益な情報が集まる
                                • B-trees and database indexes — PlanetScale

                                  What is a B-tree?The B-tree plays a foundational role in many pieces of software, especially database management systems (DBMS). MySQL, Postgres, MongoDB, Dynamo, and many others rely on B-trees to perform efficient data lookups via indexes. By the time you finish this article, you'll have learned how B-trees and B+trees work, why databases use them for indexes, and why using a UUID as your primar

                                    B-trees and database indexes — PlanetScale
                                  • スロークエリログをどう使えばいいのかって疑問、全て解決

                                    これはなに ども、レバテック開発部のもりたです。 今回はMySQLでのスロークエリログについて調査してまとめました。 スロークエリログといえば古くからパフォーマンスチューニングの力強い味方といったふうに語られることも多いですが、最近はクラウドで使える便利なツールも生まれています。この記事ではスロークエリログの一般的な使い方を紹介するとともに、他のツールとの比較や、どんな場面でスロークエリログが役に立つのか、また役に立たない場合はどんなツールを利用することができるのかについてまとめました。 足りないところなどあればおおいにマサカリ投げていただけると幸いです。 記事の流れ 記事の流れ この記事はそこそこ長いので、初めに記事の流れを解説します。適宜読み飛ばしてください。 なぜスロークエリログなのか ここではそもそもスロークエリログをなぜ確認したいのかみたいなところを説明します スロークエリログの

                                      スロークエリログをどう使えばいいのかって疑問、全て解決
                                    • 新著が出ます - 『SQL緊急救命室』- 楽しく学ぶSQL中級入門|ミック

                                      さて、本年三冊目となる新著が出ます。タイトルは『SQL緊急救命室』。はい、米国テレビドラマファンならピンと来るでしょう名作『ER緊急救命室』のパクリ、もといオマージュです。リスペクトしているから! 参考に前書きを掲載します。購入の際の参考にしてください。 本書は、ずばり「楽しく学ぶSQL中級入門」です。著者はこれまで何冊かSQL中級者(およびそれを目指す初級者)向けの本を書いてきました。幸いなことにいずれも好評をいただき、ちょっとしたロングセラーとなりましたが、やはり中には「内容が難しい」「理論的な話がとっつきづらかった」という感想をいただくことも少なくありませんでした。そこで、何とか技術的なレベルを維持したまま読者が読みやすくなるように敷居を下げる方法はないものかと長い間思案していました。 その問題を解決する試みとして考え出したのが、初級者と上級者の対話形式というスタイルです。初級者の素

                                        新著が出ます - 『SQL緊急救命室』- 楽しく学ぶSQL中級入門|ミック
                                      • RAGは検索エンジンが命!Azure AI Search初心者入門 - Qiita

                                        はじめに こんにちは! AI エンジニアのヤマゾーです。 近年、生成 AI の進化が目覚ましく、生成 AI を活用したシステムの開発が盛んに行われています。その中で最も有名なテクニックが RAG です。RAG というのは検索拡張生成 (Retrieval Augmented Generation) の略で、質問の関連情報を検索し、質問と関連情報をセットで入力して回答させる技術のことです。 各企業ではこの RAG システムを積極的に導入していますが、ほぼ確実に課題になるのが検索部分の精度です。そして検索精度を上げるためには検索エンジンの知識が必要不可欠です。 本記事では検索エンジンの筆頭サービスである Azure AI Search を題材に、検索エンジンの基本的な仕組みや検索クエリの書き方について初学者向けに解説します。 RAG の検索部分を "Retriever" と呼びますが、この語源

                                          RAGは検索エンジンが命!Azure AI Search初心者入門 - Qiita
                                        • GitHub - nuno-faria/tetris-sql: Using SQL's Turing Completeness to Build Tetris

                                          You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

                                            GitHub - nuno-faria/tetris-sql: Using SQL's Turing Completeness to Build Tetris
                                          • 初めてPrisma ORMを使うにあたって知っておくと良いこと

                                            はじめに 初めまして、株式会社Rehab for JAPANにてオンラインリハビリサービスRehab Studioの開発チームに所属している徳永です。 私が所属するチームでは、オンラインリハビリを提供するための社内向けの管理画面、お客様に利用してもらう画面をTypeScriptを利用してFrontend, Backend共に開発しています。 また、Backendの開発においては、Prisma ORM (以降、Prismaと略します。) を利用して開発を進めています。 この記事では、私がPrismaを利用して開発を進めている中でチームで共有してもらった知見や知っておくと良さそうなことなどの知見を共有したいと思います。 対象読者 (ターゲット) Prismaを利用したことがないが、興味がある人。 現場でPrismaを利用しており急いでキャッチアップする必要がある人。 Prismaを利用始めたが

                                              初めてPrisma ORMを使うにあたって知っておくと良いこと
                                            • Database Answers

                                              This is the world's most popular Web Site devoted exclusively to Data Models Our featured Data Model is Anti-Money Laundering We specialize in Data Modelling and we enjoy helping people to understand the power, the beauty and the economy of well-designed ERD Data Models. We have created a Video on YouTube on Understanding a Database Schema and more than 20 Tutorials.

                                              • Data Models

                                                Click here for our new Courses on Database Design and Data Modelling. This page shows a list of our Industry-specific Data Models in 50 categories that cover Subject Areas and are used to create Enterprise Data Models. Here is an alphabetical list all of our 1,800+ Data Models . Click here to see where our Models are used. We have written a Short downloadable Tutorial on creating a Data Warehouse

                                                • なぜDBから引くときに1000件ずつchunkingするのか、説明できますか - Lambdaカクテル

                                                  MySQLやPostgreSQLといったRDBMSからデータを引いてくるとき、扱うデータの規模によっては、1000件ずつLIMITをかけて順に引いていくということがある。 以前slow queryが出たらよくやっていたのを思い出して、ふとこのあたりってどういう根拠があってやっているのだっけ、自分が知っている他に効能があったりするのかな、と思ってSlackに書き込んだところ、同僚の id:onk に教えていただいた。その内容に加えて軽く調べた内容をまとめてみる。 Web系の話です。みなさまの知見がありましたら教えてください。 TL;DR 刺さる*1から 刺さったら困るから あたりまえ 詳細 もともとSlackに書いた原文は以下の通り(MySQL前提で書いているけどPostgresといった他のRDBMSにも適用できる話。): DB引くとき、Perl時代(?)によく1000件単位でchunkin

                                                    なぜDBから引くときに1000件ずつchunkingするのか、説明できますか - Lambdaカクテル
                                                  • Industry Data Models

                                                    Click here for our new Courses on Database Design and Data Modelling. This page shows a list of our Industry-specific Data Models in 50 categories that cover Subject Areas and are used to create Enterprise Data Models. Here is an alphabetical list all of our 1,400+ Data Models. Click here to see where our Models are used. We have written a Short downloadable Tutorial on creating a Data Warehouse u

                                                    • RedisをフォークしたインメモリDBの「Valkey」、次期バージョンでは性能が2倍以上に

                                                      オープンソースの代表的なインメモリデータストア「Redis」のフォークとしてLinux Foundation傘下で開発が進められている「Valkey」は、AWSやGoogle Cloud、Oracle Cloudなどへの採用が始まっています。 参考:Google Cloud、Redisをフォークした「Valkey 7.2」のマネージドサービス「Memorystore for Valkey」プレビュー版を開始 8月2日に、フォーク後の最初のメジャーバージョンとなる「Valkey 8.0」のリリース候補版が公開されたのに合わせて、Valkey 8.0で予定されている性能や機能の向上についての記事「Valkey 8.0: Delivering Enhanced Performance and Reliability」がValkeyのブログに投稿されました。 その内容から、Valkey 8.0の主

                                                        RedisをフォークしたインメモリDBの「Valkey」、次期バージョンでは性能が2倍以上に
                                                      • SQLに対するバックエンドのアプローチ比較、そしてSafeQLの紹介

                                                        はじめに こんにちは。calloc134 です。 バックエンド開発において、DB にデータを保存することはよくあることです。 DB と接続してデータのやり取りを行う必要がありますが、皆さんはどのようにしてデータを取得していますか? ORM やクエリビルダを利用したり、逆に SQL を記述してコード生成を行ったりと、様々な方法があります。 今回はこれらのアプローチについて比較し、比較的斬新な方針を取っているものとして SafeQL を紹介します。 注意点 ここでは、TypeScript のバックエンド開発と、そこで利用されるライブラリを前提として話を進めます。 Go や Python など他の言語での利用方法については、別途調査が必要です。 SQL に対するアプローチ まず、SQL に対するアプローチには大きく分けて 2 つの方法があります。 それぞれのライブラリの使い方を、簡単に見ていきま

                                                          SQLに対するバックエンドのアプローチ比較、そしてSafeQLの紹介
                                                        • GitHub - zmaril/bpfquery: Zack's experimental tool for querying BPF with SQL.

                                                          You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

                                                            GitHub - zmaril/bpfquery: Zack's experimental tool for querying BPF with SQL.
                                                          • Datastreamの本番運用に向けてつまづいたこととわかったこと

                                                            はじめに お世話になっております。primeuNumberの庵原です。 処暑の候、いかがお過ごしでしょうか。 今回はGoogle CloudのDatastreamを本番運用開始するにあたって検証した内容や構築に際してつまづいた点やTipsなどを共有できればと思います。 対象 Datastreamについて興味がある方 RDBMSからBigQueryへのレプリケーション(複製)の実際のソリューションが気になる方 DatastreamのTipsやつまづいた点が気になる方 Datastreamについての説明 概要 ・MySQL、PostgreSQL、AlloyDB、SQL Server、Oracle データベースからのストリーミング データへのアクセス ・BigQuery for Datastream を使用した BigQuery で、ほぼリアルタイムの分析を実現 ・安全性の高い組み込み接続が利用

                                                              Datastreamの本番運用に向けてつまづいたこととわかったこと
                                                            • 重いALTER TABLEの実行中に進捗状況を確認する方法 - CyberAgent SRG #ca_srg

                                                              メディア統括本部 サービスリライアビリティグループ(SRG)の鬼海雄太(@fat47)です。 #SRG(Service Reliability Group)は、主に弊社メディアサービスのインフラ周りを横断的にサポートしており、既存サービスの改善や新規立ち上げ、OSS貢献などを行っているグループです。 本記事は、MySQ

                                                                重いALTER TABLEの実行中に進捗状況を確認する方法 - CyberAgent SRG #ca_srg
                                                              • Bypassing airport security via SQL injection

                                                                08/29/2024 IntroductionLike many, Sam Curry and I spend a lot of time waiting in airport security lines. If you do this enough, you might sometimes see a special lane at airport security called Known Crewmember (KCM). KCM is a TSA program that allows pilots and flight attendants to bypass security screening, even when flying on domestic personal trips. The KCM process is fairly simple: the employe

                                                                  Bypassing airport security via SQL injection
                                                                • Software Design 2024年8月号 連載「レガシーシステム攻略のプロセス」第4回 ZOZOTOWNリプレイスにおけるマスタDBの移行 - ZOZO TECH BLOG

                                                                  はじめに 技術評論社様より発刊されているSoftware Designの2024年5月号より「レガシーシステム攻略のプロセス」と題した全8回の連載が始まりました。 ZOZOTOWNリプレイスプロジェクトで採用したマイクロサービス化のアプローチでは、安全かつ整合性のとれたデータ移行が必須となりました。第4回では、このマスタDBの移行について紹介します。 目次 はじめに 目次 はじめに マスタDB移行 マスタDB移行について 要件と課題 テーブル構成を再設計したうえでデータ移行を実施する ダウンタイムなしでデータ移行を実施する 方針 異なるDBおよびデータスキーマ間で移行を実施するためEmbulkを使用する ダブルライトをリリースし、データ移行中に発生するDBへの書き込みを両DBにアトミックに実施する データを一時DBに格納し、一時DBから移行先DBにデータを移行する BulkloadとBac

                                                                    Software Design 2024年8月号 連載「レガシーシステム攻略のプロセス」第4回 ZOZOTOWNリプレイスにおけるマスタDBの移行 - ZOZO TECH BLOG
                                                                  • 本番環境における等価比較を活用した言語リプレイス - ZOZO TECH BLOG

                                                                    はじめに こんにちは。基幹システム本部・物流開発部の上原です。昨年度に中途入社しまして、現在はZOZO基幹システムのリプレイスを担当しています。前職では、SESエンジニアとしてリプレイスプロジェクトに上流工程から参画し、大規模なシステムの言語リプレイスを経験してきました。さて私の紹介はこの辺りにして本題に入ります。 基幹システムリプレイスは既に進行しており、本年度には発送領域の機能を発送マイクロサービスとして切り出してリリースしました。それに続いて、入荷領域の機能をマイクロサービス化ではなくモジュラーモノリスに移行するリプレイスも進んでおり、こちらは細かく区切った単位でリリースをしています。 本記事では、自動テストによる「等価比較」を本番環境で実施しながら言語リプレイスを進めた事例を紹介します。この事例では、「言語間での処理の等価性を保証し、安心・安全にリプレイスをする」ということを目的と

                                                                      本番環境における等価比較を活用した言語リプレイス - ZOZO TECH BLOG
                                                                    • PrismaのTypedSQLがなぜアツイのか

                                                                      Prisma界隈で話題沸騰中(自分調べ)のTypedSQLだが、自分の中ではかなりアツいと思っているので、その理由を語ろう。なおTypedSQLの機能とか仕組みについては記述しないのでドキュメントや以下の記事を参照するとよい。 Prismaの難しさ 複雑なクエリを組み立てるのが特に難しい。複雑といっても何10行もあるようなクエリとかではなく、joinとか集計関数がいくつかあるくらいで十分複雑になる。たとえば特定のユーザーに紐づく記事をコメントの数を含めて取得したいとする。クエリは雰囲気こんな感じ。SQLとしては全然難しくない。 SELECT posts.id, count(comments.id) AS cnt FROM posts INNER JOIN users ON posts.author_id = users.id LEFT JOIN comments ON posts.id =

                                                                        PrismaのTypedSQLがなぜアツイのか
                                                                      • Prisma TypedSQL をクエリビルダとしてのみ運用する

                                                                        タイトルのこともできることを検証した。(ORM で文句ない人は ORM として使えばいい) Prisma は TypeScript の優秀な ORM / QueryBuilder だが、Prisma 以外で運用されていると途中から投入するのが(一応可能ではあるが)面倒だったりする。 だが Typed SQL によって、既に存在するDBに対して、副作用なくクエリビルダとしてのみ導入することができるのでは、と思いついて試したところ、できた。 今回はリモートの Supabase の PostgreSQL に対して行ったが、たぶん他の環境にも使える。 d1 とか。 prisma の最小プロジェクトのセットアップ $ mkdir prisma-qb-only $ cd prisma-qb-only ## 初期化 $ pnpm init $ pnpm add prisma @prisma/client

                                                                          Prisma TypedSQL をクエリビルダとしてのみ運用する
                                                                        • SQL緊急救命室 ──非効率なコードを改善せよ!

                                                                          2024年9月14日紙版発売 2024年9月14日電子版発売 ミック 著 A5判/432ページ 定価3,520円(本体3,200円+税10%) ISBN 978-4-297-14405-0 Gihyo Direct Amazon 楽天ブックス 丸善ジュンク堂書店 ヨドバシ.com 電子版 Gihyo Digital Publishing Amazon Kindle ブックライブ 楽天kobo honto 本書のサポートページサンプルファイルのダウンロードや正誤表など この本の概要 2011~2012年に『Web+DB Press』誌上で連載された「SQL緊急救命室」の書籍化です。病院を舞台としてダメなSQL文が毎回持ち込まれて,どこが非効率なのか,どこが間違っているのかをコミカルな対話形式で議論しながら効率的で正しいSQL文の書き方を学びます。中級者向けのSQL解説書は内容が難しく読者にと

                                                                            SQL緊急救命室 ──非効率なコードを改善せよ!
                                                                          • 発表資料: Golangを使ったDB用負荷テストツールの開発 - so what

                                                                            一年前のGoCon Kyotoの発表資料をどこにも載せていなかったので、書いておきます。 Golangを使ったDB用負荷テストツールの開発 by @winebarrel github.com

                                                                              発表資料: Golangを使ったDB用負荷テストツールの開発 - so what
                                                                            • ChartDB - Database schema diagrams visualizer

                                                                              Free and open source, database design editor. No signup -> get a diagram in just 15sec Free and open source, DB design editor. No signup -> get a diagram in just 15sec

                                                                                ChartDB - Database schema diagrams visualizer
                                                                              • DuckDB雑紹介

                                                                                DuckDBを触っていて特に興味を持った機能を中心に雑解説します。

                                                                                  DuckDB雑紹介
                                                                                • 生SQLに型を手書きする時代は終わり?Prismaの新機能「TypedSQL」

                                                                                  生SQLを扱う $queryRaw TypeScript向けのORMライブラリとしてPrismaがあります。Prismaは直感的で型安全なAPIを提供し、TypeScript向けのORMとしては第一に名前が上がることが多いライブラリです。 しかしそんな人気なPrismaでも、裏側では少しクセのあるSQLが発行されていたり、欲しいSQLがPrismaのAPIでは実現できない場合があります。 そういった場合のために $queryRaw というメソッドが用意されており、これを使うことで生SQLを書いてその結果を受け取ることができました。他のORMにもよくある機能です。 例えば以下のように実装することができます。 const users = await prisma.$queryRaw` SELECT id, name FROM "Users" WHERE id = ${userID} `; co

                                                                                    生SQLに型を手書きする時代は終わり?Prismaの新機能「TypedSQL」