この先を生き残るために!!「生存戦略としてのLLMアプリ開発技術」/20240124_PE-BANK
Relational algebra is a part of the relational model, a mathematical framework for data management invented in the late 1960s. All relational databases (such as PostgreSQL, MySQL, and SQLite) are based on this foundation, and much of their enduring power and popularity derive from these roots. Nevertheless, both internally and externally, relational databases as we know them deviate quite a bit fr
MySQL/Aurora/TiDBロック入門 – 第5回 WHERE 条件と違うロック読取り【解説動画付】 第5回は REPEATABLE READ と READ COMMITTED の分離レベルの違いによって変わったり、WHERE 条件で感じる直感的な範囲とは一致しない範囲でかかるなど、MySQL のロック読取りの挙動について解説します。 ロック読取りは実戦でよく使われている重要な手法で、細かい挙動も重要なポイントになります。動画と合わせて是非ご覧ください! ★ 第1回 トランザクション分離レベル ★ 第2回 ロックモニターの読み方 ★ 第3回 ロック読取りも SELECT は止められない ★ 第4回 INSERT を止めるインテンションロック ★ 第5回 WHERE 条件と違うロック読取り ★ 第6回 performance_schema でロックを測定 ★ 第7回 ギャップロックがあ
Amazon Web Services ブログ SaaS 向けリレーショナルデータベースのスケーリング (Part 1: 一般的なスケーリングパターン) ビジネスが成長するにつれて、SaaS (Software as a Service) プロバイダーが直面する課題の 1 つは、テナントのエクスペリエンスをどのように維持するかです。これには、テナントベースが拡大するにつれて、許容できるパフォーマンスとレスポンスタイムを確保することが含まれます。Amazon Relational Database Service (Amazon RDS) や Amazon Aurora などのリレーショナルデータベースは、一般的に SaaS プロバイダーによって使用されています。ビジネスが成長するにつれて、データベースのスケーリング方法も決定する必要があります。 SaaS ビルダーとしての課題は、SaaS
今年の初め、私はカナダで開催されたPGConf 2023に参加し、PostgreSQLがバークレー校の研究プロジェクトから最も先進的なオープンソースデータベースとしての地位を確立するまでの進化について話し、PostgreSQL 16で導入された様々な改善点、特に論理レプリケーションについて論じました。 私の講演では、バージョン16で導入された魅力的な新機能にフォーカスしましたが、PostgreSQLの過去、つまり過去のバージョンにおける主要な機能の年表や、PostgreSQL 17での実装に向けてコミュニティが議論してきた内容など、将来についても触れました。 PostgreSQLがその初期から歩んできた長い道のりをより深く理解するためには、PostgreSQLの進歩と、その過程で蓄積された素晴らしい機能の一覧を再確認することが重要だと思います。これは、献身的で熱心なコミュニティの活動のおか
2024年5月21日、バルセロナで開催されましたNutanix社主催イベント、「.NEXTカンファレンス」にて、ハイブリッド・マルチクラウド・コンピューティングのリーダーであるNutanix(NASDAQ: NTNX)とエンタープライズ企業向けのPostgreSQLのリーダーであるEnterpriseDB(以下「EDB」)は、提携を拡大したことを発表しました。両社は今後、顧客企業がPostgreSQLを活用することで、最もデータ集約型で高セキュリティなアプリケーションやワークロードに対応できる環境を目指します。 >> 詳細は下記本社発表記事(英語)を参照ください。 Nutanix and EDB Partner to Deliver a Modern Data Platform
// Simple predicates 'tacocat'.startsWith('taco') // Parameterized predicates over structured data account.balance >= transaction.withdrawal // JSON objects {'sub': '12345678', 'aud': 'example2.cel.dev', 'iss': 'https://example1.cel.dev/jwt-issuer'} // Strongly typed objects common.GeoPoint{ latitude: 10.0, longitude: -5.5 } Common Expression Language (CEL) is an expression language that’s fast, p
PostgreSQLのマネージドサービスなどを提供しているTimescaleは、PostgreSQLで高速なベクトルデータベース機能を実現する拡張機能「Pgvectorcale」をオープンソースとして公開したことを発表しました。 大規模言語モデルを用いた生成AIの注目度が高まる中で、文章や画像、音声といったデータの特徴を数値で表現するベクトル化(もしくはエンベディング)により、大規模言語モデルで扱えるようにすることへの注目も高まってきています。 ベクトルデータベースは、このベクトル化された膨大なデータの保存や類似度の検索などが可能です。 例えば、RAG(Retrieval Augmented Generation)と呼ばれる手法により大規模言語モデルの回答に外部のデータベースから取得したデータを組み込むことができます。こうした場面でベクトルデータベースが活用されます。 高速ベクトルデータベ
Google、超高速に評価可能でポータブルな式言語「Common Expression Language」(CEL)発表 式言語とは一般に、プログラミング言語の一部やネットワークなどの構成ファイル、テンプレートファイルなどの中で、簡易な式やロジック、ポリシーなどを記述する際に使われる言語のことです。 こうした用途では、さまざまなプラットフォームに対応する移植性、起動時やプログラムの実行中に評価されることがあることから高速に評価が完了すること、安全に評価が実行できること、用途に応じて拡張しやすいこと、などが求められます。 CELは超高速に評価、ポータブル、サブセットサポート CELは正にこうした要件に対応した式言語となっており、Googleは次のような特徴があるとしています。 ナノ秒からマイクロ秒程度の高速な評価に最適化されている C++、Java、Goでサポートされるスタックによるポータブ
本記事は「珠玉のアドベントカレンダー記事をリバイバル公開します」企画のために、以前Qiitaに投稿した記事を一部ブラッシュアップしたものになります。 はじめにみなさん、docker composeを利用しているでしょうか? 複数のdockerコンテナをまとめて立ち上げたり、環境変数を定義できたり便利ですよね。 この記事ではある程度docker composeを利用している方向けに私が便利、便利そうと感じたdocker composeの機能を挙げてみました。 docker compose cli v2を利用docker-composeではなく docker composeコマンドも利用可能になっています。 Docker Desktopでは v3.4.0から利用可能で、基本的にはコマンドの互換性あります。 ファイル監視による自動更新docker compose 2.20.0からCompose
2024年4月30日に、MySQLの新たなメジャーバージョン「MySQL 8.4.0」がリリースされました。本記事では、MySQLの新しい開発モデル「LTS」版と「Innovation Release」について紹介します。 はじめに 2024年4月30日に、MySQLの新たなメジャーバージョン(シリーズ)である「MySQL 8.4.0」がリリースされました。2018年4月にMySQL 8.0シリーズが正式リリースされて以来、実に6年ぶりのメジャーバージョン・リリースです。それまでのMySQLは概ね3年程度で新しいメジャーバージョンが公開されてきたので、今回の6年というのは、まさに「待望の」新バージョンと呼んでも差し支えないでしょう。 リリース方針の変更 MySQL 8.0シリーズが快調にリリースされ続けていた2023年7月に、今後のリリース方針の大きな変更に関するアナウンスがありました。か
オラクルは、自然言語による質問からSQLクエリを生成したり、自然言語で求める機能を説明することでアプリケーションの生成まで実現する「Oracle APEX AI Assistant」(以下、APEX AI Assitant)を発表しました。 APEX AI Assistantは同社のローコード開発ツールであるOracle APEXの機能として提供されます。Orale APEXはOracle DatabaseはOracle Autonomous Databaseなどを含む同社のOracle Databaseクラウドサービスにおいて無償で利用可能です。 このAPEX AI Assistantを含むOracle APEXの新バージョンは今日から利用可能。 自然言語からSQL文を生成 Oracle APEXでデータベースアプリケーションを開発する場合、まずデータモデルを設定し、デザイナーで画面を作
Pythonからsqlite-vssを使っていて、ベクトルの値の一部が非数もしくは無限と認識されてしまい、近似近傍探索の実行ができないエラーに遭遇しました。本記事ではその理由と解決方法を示します。なお、理由についてはある程度は調べてみましたが、100点の理解ではないのでそこはご承知ください。 本記事はPython, numpyおよびsqlite-vssについて基本的なことを知っている人向けの記事です。例えば以下の記事のことをわかっているという前提で解説します。 sqlite-vss入門 (MURAOKA Taro氏) https://zenn.dev/koron/articles/8925963f432361 SQLiteでベクトル検索ができる拡張sqlite-vssを試す (西見 公宏氏) https://note.com/mahlab/n/n5d59b19be573 これらの記事は筆者
PostgreSQLでbulk insert/update/upsertしたいときのメモ 0.確認用の環境 0.1.前提:PostgreSQLのバージョン 0.2.確認用のテーブル 1.bulk insert 1.1.クエリ 1.2.実行後の状態 1.3.実際にSQL Fiddleで実行した結果のリンク 2.bulk update 2.1.クエリ 2.1.1.パターン1 case式で分岐させる 2.1.2.パターン2 各値をパラメータとして渡す 2.1.3.パターン3 配列をパラメータとして渡す 2.2.実行後の状態 2.3.実際にSQL Fiddleで実行した結果のリンク 3.bulk upsert 3.1.クエリ 3.2.実行後の状態 3.3.実際にSQL Fiddleで実行した結果のリンク 3.4.補足 3.4.1.補足1 どう動いてるのか 3.4.2.補足2 注意点? 4.参考UR
はじめに GraphQL Meshとは複数のバックエンドサービスを束ねるGraphQLゲートウェイを構築するためのフレームワークです。GraphQL Mesh自体についての詳細は、数多くの記事が世の中にあるため省きます。 今回はGraphQL Meshを利用して、MySQLをラップしてGraphQLで扱う方法について試していきます。GraphQL Meshを経由して扱うことで、スキーマを自前で用意せずに既に存在するDB情報から自動で生成して取り扱うことができるようになります。 ローカルで動かすまでの手順 今回はローカルのdevサーバーとしてGraphQL Meshを立てて、任意のMySQLのDBを操作するところまで試します。 準備しておくもの ローカルからアクセス可能なMySQLサーバー 検証用に適当なデータベースとテーブルを作っておく 今回はMySQL8.0を使っています 必要なパッケー
はじめに 去年は、言語バージョンアップにおけるE2Eテストの考え方とアプローチ方法についてを書きました。 今回は、「DBの差分とロールバック」 に関して書きたいと思います。 DB Diff を実際に使ってみた結果 前回の記事では、「DB Diff」というツールを使うことで、比較とロールバックを自動で行うことができると書いていました。 ★E2Eで検証するデータ種類によって比較方法 新規登録で同じデータが登録される。 → 「どのテーブルに変更が加わったのか?」は DBデータファイルの更新日時等から自動取得させる。 → 登録されたDBデータの差分の比較。( DB Diff ) → 比較後にテスト実行前の状態に戻す( DB Diff ) とある問題が発生し、本格的な導入を断念することにしました。 レコードが多いテーブルの比較を行う場合に時間がかかり、テスト実行後のデータロールバックに時間がかかりす
はじめに SQLiteの正式なWebAssembly版「SQLite3 WASM/JS」が登場 - Publickey SQLite3をWebAssembly化した「SQLite3 WASM/JS」が気になっていたので、React上で動作するサンプルを作成してみました。 (Web標準になれなかったWeb SQL Databaseの代わりに利用できればと) SQLite Wasmの実行方法は3つあります。今回は一番単純な「メインスレッドで実行」パターンを試しました ラップされたWorderをメインスレッドで実行(推奨) Web Workerで実行 メインスレッドで実行 サンプルプログラムの動作確認はこちらをクリック React環境はViteで作成しています localStorageに保存しているため、ブラウザを閉じても永続化されます(最大10MB) 作成したソースはこちら https://g
はじめに 特徴 ブラウザ上でリレーショナルデータベースのsqlite-wasmを実行します(sqlを実行できます) SQLiteはWeb Workerで実行するため、DB処理がUIスレッドをブロックしません DBファイルはOPFS(オリジンプライベートファイルシステム)上に永続化します(ブラウザを閉じてもデータは失われません。GB単位の大きなデータを扱うことが可能です) Web Workerを容易に扱うために、Comlinkを利用します プログラムソース 動作確認ページ(GitHub Pages) ReactでSQLite Wasmを実行して、localStorageに永続化する最小のサンプルは、 メインスレッドで実行しているため?かSQLiteの読み込み時に警告が出ていました。 Ignoring inability to install OPFS sqlite3_vfs: The OPF
Auto increment(自動採番)型を採用したくない場合 Auto Incrementは、データベースにおいて自動的に一意の識別子を生成するメカニズムです。通常、数値型の列が対象となり、新しいレコードが挿入されるたびにその列の値が自動的にインクリメントされます。典型的なIDですかね。 ここでは一意性の確保の話や、データ移行やバックアップのデメリットには言及せず、セキュリティとプライバシーの懸念にフォーカスして考えます。 予測可能性 Auto Increment型のIDは連番であるため、次に生成されるIDが容易に予測可能です。これにより、攻撃者がシステムの内部構造を推測し、不正アクセスを試みるリスクが高まります。 情報漏洩のリスク 連番のIDはデータベースの挿入順序を反映しているため、公開されることで企業の活動パターンやデータ生成の頻度が漏洩する可能性があります。 例) 競合他社は、公
MySQL/Aurora/TiDBロック入門 – 第3回ロック読取りも SELECT は止められない【解説動画付】 MySQL とその互換 DB のロックの挙動を紹介する入門シリーズ、第3回は第2回で紹介したロックモニターを使って、業務ではよく使われているロック読取りについて解説します。 ロック読取りは、ゲームのバックエンドサーバーなど「同時に多数の処理をこなすけど、データとしての一貫性も重要」な場合に必須となるテクニックです。既に使っているという方も復習を兼ねてぜひご覧ください! ★ 第1回 トランザクション分離レベル ★ 第2回 ロックモニターの読み方 ★ 第3回 ロック読取りも SELECT は止められない ★ 第4回 INSERT を止めるインテンションロック ★ 第5回 WHERE 条件と違うレコードロック ★ 第6回 ギャップロックがあっても更新される ★ 第7回 ネクストキー
オラクル、マイクロソフト、OpenAIの3社は提携を発表し、OpenAIにさらなるAIインフラのキャパシティを提供するために、OpenAIが利用するプラットフォームをMicrosoft Azureに加えてOracle Cloudへ拡大することを発表しました。 もともとOpenAIとマイクロソフトは複数年にわたる長期的なパートナーシップにより、Microsoft AzureがOpenAIの独占的なクラウドプロバイダーとして、研究や製品、APIによるサービスなど、OpenAIのすべてのワークロードを支えることを発表しています。 今回の3社の提携は、このOpenAIを支えるクラウドプロバイダーにOracle Cloudが加わることを意味します。 OpenAIのサム・アルトマンCEOはこの提携に当たり、次のようにコメントしています。 We are delighted to be working w
現場で重宝するSQLリファレンス。ソフトウェア開発の現場では、「SQLの構文をすぐに確認したい」「データベースによって異なるSQLの書き方を知りたい」「久しぶりにSQLを使うので簡単に復習したい」といったことがよくあります。本書では、仕事でSQLを利用しているプロの開発者を対象に、主要な5つのデータベース――MySQL、SQL Server、Oracle、PostgreSQL、SQLite――で使われるSQLの構文およびデータベースの基本を簡潔に解説します。PythonやRからSQLを利用する方法も解説しているので、データアナリストやデータサイエンティストなど、開発者以外のSQLユーザーにも有用でしょう。 まえがき 1章 SQL速修講座 1.1 データベースとは何か? 1.1.1 SQL 1.1.2 NoSQL 1.1.3 データベース管理システム(DBMS) 1.2 SQLクエリーとは何
こんにちは、駅奪取エンジニアの id:kimkim0106(旧: id:kaoru_k_0106)です。 今回の記事は、駅奪取でテーブルにレコードが「無ければ INSERT、あれば UPDATE」(いわゆる UPSERT)をする箇所で Duplicate entry が出ていたのを修正したり、未然に防ぐ実装をしたときに得られた知見です。 このような処理はよく使われますが、うまく実装しないとエラーが発生したりパフォーマンスの問題が生じたりします。 この記事では、自分が試した方法のメリット・デメリットについて説明します。 目次 前提条件 Duplicate entry とは 1. Duplicate entry が出たらトランザクション自体をやり直す 2. INSERT ... ON DUPLICATE KEY UPDATE 3. とりあえず INSERT して Duplicate entry
こんにちはSREチームの宮後(@miya10kei)です。最近、スマートホーム化にハマっていていろいろと買い漁っています🛒 N+1問題を検知するのって結構大変ですよね? 今回はDatadogを使ってN+1問題を可視化し、パフォーマンス改善につなげた話を紹介したいと思います。 ※ 2024/05/29に開催されたJapan Datadog User Group Meetup#4 でもLTしてきました🎤 speakerdeck.com N+1問題とは? N+1問題は主にデータベースへのクエリーを扱う際に出くわすパフォーマンス上の問題です。1つのクエリーでN件のデータを取得した後にそれぞれのデータに対して追加でクエリーが発行されることでパフォーマンスを大幅に低下させます。(1 + N問題と呼んだ方がしっくりくる気がしますが...🤫) 背景 この取り組みを始めた経緯は、システムへのリクエスト
期限の制約なく無料で提供される「Free Tier」クラウドサービスまとめ、DBaaS/BaaS/その他編(2024年版) いくつかのクラウドサービスでは、新規ユーザーに対する1年程度の無料トライアルや一定額のクーポンなどの提供だけでなく、期限の制約なくずっと無料で提供される、いわゆる「Free Tier」や「Always Free」と呼ばれるサービスが提供されています。 こうしたサービスは評価や一時的なテスト環境、あるいはホビー用途などに適しています。 本記事では期限の制約なく無料で提供されている主なクラウドサービスを、2024年版としてまとめました。(有料サービスの追加機能として無料で提供されているものは除外しています)。 ただしこれらの無料のサービスは、提供側の都合により一時的に申し込みや利用が制限されたり、提供が終了することがあります。提供側の都合に留意しつつ、良心的な範囲でご利用
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く