Database Engineering Meetup #1 DBアーキテクチャの比較と選択 Cloud-native storage service for bulk load & random lookup workload https://scalar.connpass.com/event/298887/
DBMSのメモリ管理について データベース管理システム(DBMS)の設計では、大量のデータと複雑なクエリを処理するために、ハードウェアの特性を最大限引き出すことが求められます。 この記事では、DBMSがどのようにメモリを使ってデータアクセスの速度を向上させ、同時にデータの安全性を確保しているのかを解説します。 DBMSと記憶装置の関係について DBMSが使う記憶装置は次の2つです。 HDD HDDは磁気ディスクを使用してデータを記録・読み取りする記憶装置です。その主な特徴は大容量であり、コスト効率が良いことです。DBMSでは、データの永続的な保存にHDDが用いられます。これにより、システムがシャットダウンされた後もデータが保持され、必要に応じて再びアクセス可能となります。 しかし、HDDのデータアクセス速度はメモリに比べて遅いため、リアルタイム処理や高速なトランザクションが求められるアプリ
まいえすきゅーえりたい ぽすぐれない おらくるってる(狂ってる)tomoです。 今日はいつものMySQLリファレンスを読むではなく、夏休みの宿題にしていたこれをやってみます。 MySQLとOracleDBの実行計画を比較してみた さて同じようなテーブルで同じデータを載せて。 実行計画を取ってみた時、どのくらい情報量が違うのか簡単に違いを見てみましょう。 前提として、以下をご認識ください。 一方はOSSのDBエンジン、もう一方はガチガチ商用DBエンジンです。情報量が違うのは当たり前であって、良し悪しを比較したいのではありません。そして製品比較をしたいのではありません。いつも商用DBメインで使っているエンジニアが、OSSのDBにこうゆう情報も出してほしいな!というのをお願いしたいと思っていて、それを考える元ネタメモだと思ってください。 OSSでこれだけの情報出せるMySQLや、今回紹介しません
はじめに Next.js を Cloudflare にホスティングしようとすると、必然的に Edge Runtime 環境になります。しかし、Edge Runtime 環境では、Node.js Runtime と異なり、Prisma がそのまま使えません。 最初に思い浮かぶ解決策は Prisma Accelerate です。Prisma Accelerate は公式のサービスで、接続プールイングやグローバルキャッシュ機能を備えており、Edge Runtime でも Prisma を使えるようにします。 しかし、無料プランだと月に 6 万クエリの制限があり、本番運用には不安が残ります。 そこで、今回は Prisma Accelerate を自前で Cloudflare Workers 上に構築し、本番運用に耐えうるサービスを無料で開発する方法を紹介します。この方法なら、無料プランでも 月に
はじめに 概要 Apache Iceberg(アイスバーグ)とは [重要] Icebergの本質はTable Specである Table Spec バージョン Icebergハンズオン Icebergの特徴 同時書き込み時の整合性担保 読み取り一貫性、Time Travelクエリ、Rollback Schema Evolution Hidden Partitioning Hidden Partitioningの種類 時間 truncate[W] bucket[N] Partition Evolution Sort Order Evolution クエリ性能の最適化 ユースケース Icebergのアーキテクチャ Iceberg Catalog Iceberg Catalogの選択肢 metadata layer metadata files manifest lists manifest f
CDNレイヤでDBのコネクションプーリングとクエリキャッシュを提供。世界中どこからのDBアクセスでも高速化する「Hyperdrive」、Cloudflareが提供 Cloudflareは、グローバルなCDNレイヤでデータベースのコネクションプーリングとクエリのキャッシュを提供することによりデータベースへのアクセスを高速化する新サービス「Hyperdrive」のオープンベータを開始したと発表しました。 Want to make the existing regional database in your legacy cloud provider much, much faster? We've just launched Hyperdrive, which dramatically speeds up queries you make to databases you already ha
For modern real-time web applications, the ability to send events from the server to the client is indispensable. This necessity has led to the development of several methods over the years, each with its own set of advantages and drawbacks. Initially, long-polling was the only option available. It was then succeeded by WebSockets, which offered a more robust solution for bidirectional communicati
PostgreSQLのマネージドサービスなどを提供しているTimescaleは、PostgreSQLで高速なベクトルデータベース機能を実現する拡張機能「Pgvectorcale」をオープンソースとして公開したことを発表しました。 大規模言語モデルを用いた生成AIの注目度が高まる中で、文章や画像、音声といったデータの特徴を数値で表現するベクトル化(もしくはエンベディング)により、大規模言語モデルで扱えるようにすることへの注目も高まってきています。 ベクトルデータベースは、このベクトル化された膨大なデータの保存や類似度の検索などが可能です。 例えば、RAG(Retrieval Augmented Generation)と呼ばれる手法により大規模言語モデルの回答に外部のデータベースから取得したデータを組み込むことができます。こうした場面でベクトルデータベースが活用されます。 高速ベクトルデータベ
はじめに タスクを中心にした管理をしない(できないものは) 「やる(かもしれない)こと」を忘れない方法 Dataviewプラグインを使う おまけ:期限設定とか おわりに はじめに 1年以上使ってきて、私にとってObsidianが研究、仕事、生活とうまく付き合うためのメインのツールになった理由がなんとなく整理できてきました。もちろんこのプラグインのこれが便利とか細かいところはいろいろありますが、大まかに挙げると下記の3点が大きいです。 とにかくDaily Noteにいろいろ書いて、後で個別のノートに切り出す(ノート同士の関係はほぼ自動的に構築される)というやり方が私のずぼらな性格に合っている 研究や仕事で文章を書く作業の割合が大きいのでテキストを中心にしたツールが使いやすい 特に研究ではタスクをメモ・ノートなどから区別するのが難しいので分けないで付き合う方がやりやすい このうち、1については
以前にデータベースを自作しようとして、SQLiteのアーキテクチャを見てみたらVMだったことに疑問を感じ、それをツイートしたところ作者からリプをもらいました。 作者いわく、次のような背景があったとのことでした。 SQLiteを作った当初はデータベースエンジンのことをよく知らないがコンパイラのことをよく知っていた SQLデータベース・エンジンを書くという問題をコンパイラ構築の問題として扱うのは自然なことだった データベースエンジンのコアの部分をVMにするという発想がまったくなかったので、どんなメリットがあるのか?と気になっていました。 それを作者に聞いたら、詳細な説明ページを作ってくれました。 個人的にVMにしたことで、評価&実行のパフォーマンスは多少良くなると思うが、データベースエンジンのパフォーマンスにそれほど寄与していないんじゃないかな?って思ったりしました。 本記事はそのページについ
困った時はドキュメント、どうもかわしんです。最近、諸事情で SQLite のドキュメントを読んでいます。 前回の記事 で紹介した通り SQLite を Rust で再実装しています。おかげさまで 300 を超える Github Star もいただき嬉しいです。 github.com SQLite は全ての仕様が ドキュメント にまとめられているので、そのドキュメントと本家の実装を読み比べながら実装しています。 SQLite を再実装する上で特に以下のドキュメントは役にたちます。これらだけで最小限の SQLite の実装は作れると思います。 Overview Documents > About SQLite いかに SQLite がすごいかを自慢しているドキュメント。使おうとしている人には安心を、再実装しようとする人には絶望を与えてくれます。 Programming Interfaces >
タイムライン的なものをSELECTだけで実装しようと思った時に、Nested LoopなクエリでUsing temporary; Using filesortが出るようなそこそこ遅いクエリになる。その時にMySQLがインデックスをどう辿っているかを知りたかったので調べてみた。MySQLバージョンは8.0.33。 あまり自信はないので、もし間違った話をしていたら教えて欲しい。 どのようなクエリを検証するか タイムラインの取得ができるような、ユーザー・フォロー関係・投稿の3つのテーブルを作る。スキーマは次の通り。 CREATE TABLE users ( id INTEGER PRIMARY KEY AUTO_INCREMENT, name VARCHAR(100) NOT NULL ); CREATE TABLE follows ( id INTEGER PRIMARY KEY AUTO_I
後方互換性って辛いね、どうもかわしんです。 最近 Rust で SQLite をフルスクラッチで再実装しています。 github.com 再実装するために SQLite の公式ドキュメントやソースコードを読み込んでいるわけですが、その過程で気付いたおもしろポイントを共有しようかと思います。 今回はその第二弾、ファイルフォーマット編です。第一弾はこちら:SQLite のおもしろ仕様 (1) : データ型 - kawasin73のブログ 前提知識 : ページ まず、この記事を面白いと思ってもらうための前提知識です。 大抵のデータベースはデータを保存するファイルをページという単位で管理します。SQLite ではデフォルトでは 1 ページ 4096 バイトです。これは、ファイルを保存するデバイス(HDD や SSD など)としてブロックデバイスを想定しているからです。ブロックデバイスとはデータの読
こんにちは。LINEヤフー株式会社で、出前館というプロダクトのサーバーサイドエンジニアをしている古田大志です。 株式会社出前館はLINEヤフーのグループ会社です。資本業務提携を結んでいて、LINEヤフーが開発などをサポートしています。 詳しくはこちらをご参照ください。(https://corporate.demae-can.co.jp/pr/news/demaecan/line.html)(外部サイト) 今回の記事では、その出前館における開発の内容を紹介させていただきます。 出前館はデリバリーサービス事業のプロダクトで、開発においてはマイクロサービスアーキテクチャを採用しています。出前館のマイクロサービスの1つに、クーポンに関するドメインの責務を持ったコンポーネントであるクーポンサービスがあります。 クーポンサービスでは、ビジネスエンハンスに伴う「非機能要件の増大」や「仕様の複雑さの肥大化
今、自分が所属している会社では、いわゆるフルサイクルなアプリケーションエンジニアがほとんどで、SRE のような、システムを運用改善することを専門にするメンバーは居ません。一方でそれなりにプロダクトの数は多く、各種ミドルウェアの運用で困っているのを見かけることがあります。 色々な人が似た問題に悩むのはもったいないので、「MySQL を運用したことがある人からすると、こういう考え方をする」という風な目線で勉強会を行いました。せっかくなので社内の情報を抜いたうえで公開します(同じようなことを色々な場所で言っていて、その都度作り直しているから……というのもあります)。 speakerdeck.com ちなみに DB のどこで悩むかはだいぶ業界ドメインに左右されると思っています(それはそう)。ゲーム業界なんかは、激しくスパイクするワークロードな上にミスったときの機会損失が激しいので、シャーディングを
MySQLの最新バージョンである「8.1」が発表されたので超久しぶりに筆を取った。しばらく筆を取らなかった理由は個人的なものなのだが、このブログはごく個人的な活動であるので諸々の事情はご容赦頂きたい。 さて、MySQL 8.0の次のバージョン番号は何になるかという憶測は色々あったと思うのだが、8.1というものに落ち着いた結果になった。(9.0にしてしまうと、2桁目の番号が意味をなさなくなってしまうからね!!ちなみに次のバージョンは8.2、8.3・・・という具合に続く予定だ。)8.1という番号はバグデータベース上で既にチラチラと出ていたので、公式な発表よりも前に気づいていた人も多かったのではないだろうか。本稿では、バージョン8.1の概要と、8.1リリースと同時に発表されたInnovation ReleaseおよびLTS(Long Time Support)について解説しようと思う。 Inno
Jack Wallen (Special to ZDNET.com) 翻訳校正: 編集部 2024-04-10 07:30 「Linux」は長年にわたりクラウド上のサーバーに搭載されてきたが、クラウドが急激に拡大したこと、そしてLinuxがクラウド専用に設計されたものではないことを考慮すると、何かを変える必要があることは明らかだった。 その変化をもたらすのは、「Ingres」「PostgreSQL」「VoltDB」の開発に携わったMichael Stonebraker氏と、「Apache Spark」の生みの親でDatabriskの共同創設者/最高技術責任者(CTO)であるMatei Zaharia氏かもしれない。両氏はマサチューセッツ工科大学(MIT)のチームと協力して、「DBOS」(別名「DataBase OS」)という革新的なOSを開発した。 DBOSの開発は2022年に始まった。D
[速報]Google、PostgreSQLにAI対応を組み込んだ「AlloyDB AI」発表、オンプレミスでも他社クラウドでも利用可能に。Google Cloud Next '23 Googleは、8月29日(日本時間の30日未明)から米サンフランシスコで開催中のイベント「Google Cloud Next '23」で、同社が提供するPostgreSQL互換のデータベース「AlloyDB」にAI対応機能を組み込んだ「AlloyDB AI」を発表しました。 AlloyDB AIは、データベース内に保存されているデータをAIと組み合わせて利用しやすくする機能を搭載しており、企業などが持つ商品データや顧客データなどをAIで活用するアプリケーション構築を容易にします。 一般に、企業がAIや機械学習を利用したアプリケーションを開発する場合、既存の大規模言語モデルなどをそのまま利用するのではなく、自社
生成AIの可能性を広げる「ベクトルデータベース」への関心が急速に高まっている。ベクトルデータベースとは、生成AIが扱う非構造化データの格納・管理・照会で利用されるデータベースのこと。ここではベクトルデータベースの基本をわかりやすく解説するとともに、生成AIの普及において、どのような役割を果たすのか、注目される理由などと合わせて紹介しよう。 バークリー音大提携校で2年間ジャズ/音楽理論を学ぶ。その後、通訳・翻訳者を経て24歳で大学入学。学部では国際関係、修士では英大学院で経済・政治・哲学を専攻。国内コンサルティング会社、シンガポールの日系通信社を経てLivit参画。興味分野は、メディアテクノロジーの進化と社会変化。2014〜15年頃テックメディアの立ち上げにあたり、ドローンの可能性を模索。ドローンレース・ドバイ世界大会に選手として出場。現在、音楽制作ソフト、3Dソフト、ゲームエンジンを活用し
日本電気株式会社(NEC)と株式会社ノーチラス・テクノロジーズがNEDO(国立研究開発法人新エネルギー・産業技術総合開発機構)のプロジェクトとして開発をしてきた国産の高性能リレーショナルデータベース管理システム「劔(Tsurugi)」のソースコード公開が、本日(2023年10月5日)午後3時にGitHubで開始されました。 ソースコードは劔(Tsurugi)のコミュニティサイトからGitHubサイトにアクセスすることでダウンロードできます。Dockerイメージも用意されているため、すぐに試すことも可能。 開発元であるNECとノーチラス・テクノロジーズは、商用サポートなどを必要とする顧客向けにサブスクリプションの提供も来春に予定していると発表しています。 また、さくらインターネット株式会社の協力を得て、PoC環境を年内にサービス化する予定。サーバの貸し出しの検討も進めているとしています。 メ
バックエンドエンジニアの徳富(@yannKazu1)です。先日、メドピアのメインサービスであるmedpeer.jpで使われているデータベースエンジンを、MySQLからAurora MySQLへと移行しました。今回はその移行のプロセスについて詳しくお話しします。 移行したデータベースの簡単なインフラ構成 移行方針 今回移行するデータベースは複数のアプリケーションから参照されており、ダウンタイムによるユーザー影響が大きいため、移行方針の検討の段階で重視したのは、ダウンタイムの最小化でした。これを達成するために、DNSのCNAMEレコードと、Auroraのリードレプリカを活用し、移行させることにしました。 DNSのCNAMEレコードの使用 データベースエンドポイントをアプリケーションに直接記述する代わりに、DNSのCNAMEレコードを利用して間接的に参照するようにしました。これにより、データベー
【番外編】Excelの知識しかない人をRDBの担当者にする:SQLの知識がなくてもJetBrains AIを利用してRDBをノーコード生成! 企業にとってデータは顧客の次に大切なものであり、その保持・管理・活用方法について各社の担当者は日々、頭を悩ませているところだと思います。 2010年代になってから話題になった「NoSQL」はデータベースの一つの選択肢としてすっかり定着し、2020年代になってからはWebブラウザからデータの入力・閲覧がすべてできてしまう「DBaaS(サービスとしてのデータベース)」とでも呼ぶべき製品も多数出てきました。それらを活用したいところですが、社内で運用しているRDBMSをすぐにやめるわけにもいきません。 これらを保守するには、担当者は最低でもSQLは覚えておかなければならないのですが、教育コストが掛かります。そこで今回は「先輩社員がいなくても、SQLを知らなく
これは はてなエンジニアアドベントカレンダー2023 3日目の記事です。 はてなエンジニア Advent Calendar 2023 - Hatena Developer Blog はてなエンジニアのカレンダー | Advent Calendar 2023 - Qiita 昨日は id:pokutuna さんの blog.pokutuna.com でした。私も若い頃に同僚とGitHub上で白熱してしまい観光名所になってしまっていたような気がします。気を付けていきましょう。 さて、この記事では SQLiteでLinderaを使った日本語全文検索をする話を紹介します。 モチベーション laiso.hatenablog.com 上の記事でも話題になっているように個人開発ではDBのコストは問題です。同様に全文検索したいときにもコストに頭を悩ませているのではないでしょうか? たとえば Amazon
概要 DBMS で広く利用されている B+ tree には様々な variant が存在するが、B-link tree もその1つ。 シンプルなラッチプロトコルで並行アクセスをさばけるよう、リーフノード以外のノードにも右の隣接ノードへのポインタを持たせた構造となっており、PostgreSQL で使われていることでも有名。 この記事では主にこの B-link tree に焦点を当てる。 B+ tree 全般やその他インデックス技術自体に興味がある場合は「最強DB講義 #10 いまどきのデータベース索引技術(石川佳治 教授)」の講義資料を読むのがおすすめ。 B-link tree 理解する上で必須な知識「ラッチ」 「ラッチ」というのはいわゆるロックのことだが、DB においては「ロック」というとトランザクション分離のための高価な(数千CPUサイクルを要する)処理を指すことが多く、「ラッチ」という
さて、 今回はオフィスにて「ER図とは?」を学ぶランチを開催しました🍔 ゲームのDBなんて考えたことが無いので、ER図アウトプットに至るまでを記事に残してあげようと思います。 今回は、リリース時に同僚みんなで遊んでいたスマホゲーム「マリオカート ツアー」を使って マリカーのフレンドランキング画面を出すために必要なDB設計を考えます。 軽いランチなので、事前に参加者が通勤中の電車内で作成できるくらいのボリュームを目指しました。 データベースとは・・・?という初心者メンバーでもイメージしやすいように。 こういうアウトプットは初めてですが、徐々に慣れていきたいです。 【開催概要】 ・参加者:ファッションIT企業のPM、エンジニア、事務・・・などなど ・開催時間:1時間(事前アウトプット作成:20〜30分程度) ・その後:SQLを初心者と書いてみるランチも実施しました。 →BigQueryがSQ
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く