タグ

mysqlに関するnakex1のブックマーク (67)

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

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

    医薬品検索でMySQLの全文検索機能を使った話 - KAKEHASHI Tech Blog
  • DockerでPHPの勉強環境を構築してみた - Qiita

    はじめに みなさん、環境構築ってめんどくさくないですか? 僕はめんどくさいです。 を使ってPHPの勉強をする機会があったのですが、環境構築をしたくなかったのでDockerを用いることにしました。 やること 『PHP7+MariaDB/MySQL マスターブック』では、XAMPPというパッケージを使用するのですが、Dockerにて環境を再現します。 PHP:7.4を使えるようにする Apacheを使えるようにする MariaDBを使えるようにする このではメールを用いるためメールサーバを立ち上げる 注意:この記事ではXAMPPに似た環境を構築する手順を示すのみであり、詳しい解説等はしません(今後追記していくかは未定) 動作環境 M1 MacBook Air(MacOS 13.1) Docker ファイル構成

    DockerでPHPの勉強環境を構築してみた - Qiita
  • MySQLのutf8mb4と戦った話 - Uzabase for Engineers

    皆様こんにちは、NewsPicksエンジニアの米澤です。 先日 2023/03/30は、こちらでアナウンスしていた通り、サービスの停止を伴うシステムメンテナンスを実施させて頂きました。 NewsPicksをご利用頂いている皆様には、ご迷惑おかけいたしました。 今回はこのメンテナンスの中で行われたDBテーブルのmigrationについてお話ししたいと思います。 ことの始まり やったこと 方針決め utf8mb4に対応していないテーブルを調べる migrationを作成する 影響範囲を調べる 開発環境でリハーサルを行う メンテナンスの日 最後に ことの始まり NewsPicksではバグの検知にBugSnagを利用しています。 ある時、BugSnagにこんなエラーが通知されてきました。 org.springframework.orm.hibernate4.HibernateJdbcExcepti

    MySQLのutf8mb4と戦った話 - Uzabase for Engineers
  • DBのロックについてあまり意識したことがない人に向けた実は覚えておきたいロックについての知識 - CARTA TECH BLOG

    みなさん、おはようございます! CARTA fluct エンジニア の なっかー@konsent_nakka です。 CARTA TECH BLOG アドベントカレンダー 12/14ということで、普段DBのロックについてあまり意識したことがない人に向けた実は覚えておきたいロックについての知識をざっとまとめてみました。 とりあえずこれだけ読んでおけば最低限は困らない、もし何か困った時にはあそこで出てきた内容をもう少し深く調べて見るか、というきっかけになれば良いなと思います。 厳密な定義よりも普段DBを扱う中でロックについてあまり意識したことがないような人にもすっと入ってくるように簡単な表現を優先して書いていますがご了承ください。 目次 留意事項 排他ロックと共有ロック トランザクション分離レベル SELECTのロックレベルを変更する 共有ロック: LOCK IN SHARE MODE 排他ロ

    DBのロックについてあまり意識したことがない人に向けた実は覚えておきたいロックについての知識 - CARTA TECH BLOG
    nakex1
    nakex1 2022/12/17
  • Auroraバージョンアップに伴い改めてMySQL5.7の押さえるべきポイントについて勉強会を開催しました! - ANDPAD Tech Blog

    こんにちは!エンジニアの福間(fkm_y)です。 弊社でデータベースの技術顧問をして頂いている三谷(mita2)さんに、MySQL5.7の追加機能についての開発部向け勉強会を実施いただきましたのでそのレポートをお伝えします。 開催背景 弊社では三谷さんによるデータベース勉強会を定期的に開催しており、3月にもMySQLロックの基礎編の勉強会を開催しました。 ANDPADでは、今年の4月にAurora MySQLをVer.1(MySQL5.6互換)からVer.2(5.7互換)にバージョンアップを実施しました。 tech.andpad.co.jp Aurora MySQL Ver.2 になることで使えるようになった、MySQL5.7で追加された機能について開発者に知ってもらい、普段の開発に取り入れてもらうためにMySQL5.7の勉強会を開催することとしました。 今回は追加された150以上の新機能

    Auroraバージョンアップに伴い改めてMySQL5.7の押さえるべきポイントについて勉強会を開催しました! - ANDPAD Tech Blog
    nakex1
    nakex1 2022/08/03
  • Node.jsのMySQLパッケージにおけるエスケープ処理だけでは防げない「隠れた」SQLインジェクション - Flatt Security Blog

    記事は筆者styprが英語で執筆した記事を株式会社Flatt Security社内で日語に翻訳したものになります。 TL;DR Node.jsのエコシステムで最も人気のあるMySQLパッケージの一つである mysqljs/mysql (https://github.com/mysqljs/mysql)において、クエリのエスケープ関数の予期せぬ動作がSQLインジェクションを引き起こす可能性があることが判明しました。 通常、クエリのエスケープ関数やプレースホルダはSQLインジェクションを防ぐことが知られています。しかし、mysqljs/mysql は、値の種類によってエスケープ方法が異なることが知られており、攻撃者が異なる値の種類でパラメータを渡すと、最終的に予期せぬ動作を引き起こす可能性があります。予期せぬ動作とは、バグのような動作やSQLインジェクションなどです。 ほぼすべてのオンラ

    Node.jsのMySQLパッケージにおけるエスケープ処理だけでは防げない「隠れた」SQLインジェクション - Flatt Security Blog
  • UTF-8のテーブル(MySQL5.6)に竈門禰󠄀豆子が格納できない問題を調べてみた - Qiita

    竈門禰󠄀豆子をMySQL5.6のテーブルにinsertしようとすると正しく格納できず、竈門禰となってしまうケースがあるという話を聞き、調べてみました。 実践 まずは試しにやってみます。 mysql> show create table verification\G *************************** 1. row *************************** Table: verification Create Table: CREATE TABLE `verification` ( `name` varchar(100) COLLATE utf8_bin DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin 1 row in set (0.01 sec) mysql> inse

    UTF-8のテーブル(MySQL5.6)に竈門禰󠄀豆子が格納できない問題を調べてみた - Qiita
  • MySQLとインデックスとPHPer

    2021/10/03 PHP Conference Japan 2021 https://fortee.jp/phpcon-2021/proposal/85631599-8ed0-4b20-a46c-9ef5319c7aba

    MySQLとインデックスとPHPer
  • MySQLでプライマリキーをUUIDにする前に知っておいて欲しいこと | Raccoon Tech Blog [株式会社ラクーンホールディングス 技術戦略部ブログ]

    株式会社ラクーンホールディングスのエンジニア/デザイナーから技術情報をはじめ、世の中のためになることや社内のことなどを発信してます。 bashパフォーマンスMySQLInnoDBDB設計インデックス こんにちは、羽山です。 今回は MySQL のプライマリキーに UUID を採用する場合に起きるパフォーマンスの問題を仕組みから解説します。 MySQL(InnoDB) & UUID のパフォーマンスについては各所でさんざん議論・検証されていますが、論理的に解説した記事が少なかったり一部には誤解を招くようなものもあるため、しっかりと理由から理解するための情報として役立つことができればと思っています。 UUID と比較される古き良き昇順/降順のプライマリキーはというと、 MySQL の InnoDB において良いパフォーマンスを出すために縁の下の力持ちのような働きをしてくれているケースが実は少な

    MySQLでプライマリキーをUUIDにする前に知っておいて欲しいこと | Raccoon Tech Blog [株式会社ラクーンホールディングス 技術戦略部ブログ]
    nakex1
    nakex1 2021/09/01
  • MySQLで全文検索その1(Mroonga編) - 虎の穴ラボ技術ブログ

    こんにちは、お久しぶりです。虎の穴ラボのA.M.です。 前回の記事「全文検索エンジンについて調べてみた」から大分間が空いてしまいましたが、今回はとらのあなのサービスで使用頻度の高いMySQLで、実際に全文検索をやってみたいと思います。 MySQLで手軽に全文検索を実現するための手法としては、以下の2つが挙げられます。 MySQLのFULLTEXTインデックス:MySQLの標準機能。v5.7から日語に対応。 Mroonga:GroongaベースのMySQLストレージエンジン。 ※FULLTEXTインデックスやMroonga、Groongaなどについて詳しくは前回の記事や、第3回ライトニングトークイベント記事をご参照ください。 toranoana-lab.hatenablog.com toranoana-lab.hatenablog.com 今回は、記事のタイトルにもあるように、Mroong

    MySQLで全文検索その1(Mroonga編) - 虎の穴ラボ技術ブログ
    nakex1
    nakex1 2020/03/31
  • MySQL (MariaDB) でハマった仕様 - kamocyc’s blog

    以前,MySQL (正確にはMariaDB) を使った際,いろいろはまったので記載します. 使ったバージョンが古い(MariaDB 10.1.37, MySQL 5.7くらいに相当)なので,最新版では治っているところもいくつかあります. sql_modeをデフォルトの設定で使わない これはよく言われていることですが,sql_modeがデフォルトでは変な値が入ったりエラーになって欲しいところがスルーされたりしてまずいので,適切なsql_modeを設定します. 第18回 MySQL5.7のデフォルトのSQLモードを確認してみる:MySQL道普請便り|gihyo.jp … 技術評論社 MySQLSQLモードをstrictモードで設定する。 - Qiita ただ,MySQL 5.7以降はデフォルト設定が改善されたようです.(でも確認すべきですが) MySQL :: MySQL 8.0 Refer

    MySQL (MariaDB) でハマった仕様 - kamocyc’s blog
    nakex1
    nakex1 2020/02/18
  • スイッチ交換でMySQLのレプリケーションが壊れた顛末

    2019年8月2日、インフラストラクチャエンジニアやネットワークエンジニア向けの勉強会「インフラ・ネットワークエンジニア勉強会」がアイスタイル株式会社で開催されました。同会では、AWSに関するインフラ・ネットワーク視点の話や、オンプレ環境の話など、過去の事例を共有。6人のエンジニアが成功・失敗談をシェアしました。「スイッチ交換でデータベースがすごく苦労した話」に登壇したのは、株式会社アイスタイルのsuzukito氏。講演資料はこちら スイッチ交換でデータベースがすごく苦労した話 suzukito氏:レイヤ3スイッチの交換でデータベースがすごく苦労した話をしたいと思います。 自己紹介です。鈴木と申します。アイスタイルのデータベースエンジニアをやっています。 お話しすることは、スイッチ交換でMySQLのレプリケーションが壊れました。その顛末を共有したいと思います。 まず、ある日、インフラのほ

    スイッチ交換でMySQLのレプリケーションが壊れた顛末
    nakex1
    nakex1 2019/10/21
  • InnoDB の全文検索機能におけるキャッシュ利用について | スマートスタイル TECH BLOG

    MySQL 5.7 において InnoDB の全文検索機能が日語に対応するようになって約 3 年が経ちました。今では InnoDB で日語の全文検索ができることは広く知られるようになってきたのではないでしょうか。そんな中、今回は MySQL 8.0 においてもまだ修正されていない、全文検索の制限について確認していきたいと思います。 MySQL 5.7 の日語全文検索とは まず、MySQL 5.7 において何が変わったのかについて簡単におさらいしたいと思います。 MySQL 5.6 まではデフォルトで FULLTEXT パーサーが使用されていたため、日語のように単語の初めと終わりが明確でない言語で FULLTEXT インデックスを使用しようとした場合、単語を区切ったり N-gram で分割した状態で DB に格納するなど、使用するためには DB のデータを変形して格納する必要がありま

    InnoDB の全文検索機能におけるキャッシュ利用について | スマートスタイル TECH BLOG
    nakex1
    nakex1 2019/07/21
  • 知ってた!?MySQL5.6以上から日本語全文検索ができるようになったってこと・・ - Database JUNKY

    MySQL5.6~ で日語全文検索ができるぞ!!! 最近MariaDBばかりやっていて、MySQLの存在を忘れていたのですが、今まで英語しか利用できなかったのに、いつの間にか標準で日語全文検索ができるようになっていたので、久しぶりに触って見ようと思います。これがまた、意外に簡単!だったので、その設定/実装方法をできるだけ簡単に紹介したいと思います 全文検索とは あれですね。通常テーブルに設定するカラムの索引ではなく、行全体に対して、インデクシングをする設定といえばいいのかしら IROTEC(アイロテック) ラバー ダンベル 40KGセット (片手20kg×2個) 筋トレ ダイエット ダイエット器具 トレーニング ベンチプレス 筋肉 出版社/メーカー: 株式会社スーパースポーツカンパニーメディア: その他購入: 2人 クリック: 31回この商品を含むブログを見る ウィキペディアで見るとこ

    知ってた!?MySQL5.6以上から日本語全文検索ができるようになったってこと・・ - Database JUNKY
    nakex1
    nakex1 2019/07/21
  • MySQLの0000-00-00 00:00:00という負債とridgepoleの限界 - Studyplus Engineering Blog

    こんにちは、CTOの島田です。 今回は、StudyplusのDBのmigrationで発生した問題とその解決ステップを説明したいと思います。 前提 schema.rbでの運用 ridgepoleの導入 "0000-00-00 00:00:00" 問題 問題の原因は? 暫定対応 問題の解消 あるべき姿 まとめ 前提 まずは前提。 Aurora MySQL 5.7 Rails 5.1.6 (対応当時。今は5.2.2) schema.rbでの運用 Studyplus体のmigrationは、色々な経緯によって2018年5月まで、いわゆるRailsのmigration の作法とは異なる方法で運用されてました。 schema.rb でスキーマの状態を管理してはいたのですが通常とはやや異なる管理がされていました。 以下、改変して一部抜粋。 ActiveRecord::Schema.define do

    MySQLの0000-00-00 00:00:00という負債とridgepoleの限界 - Studyplus Engineering Blog
    nakex1
    nakex1 2019/01/29
  • そろそろMySQLのutf8について一言いっとくか - tmtms のメモ

    MySQLのutf8 charsetは、やれ「罠」だの「絵文字が入らなくて使えない」だの「utf8という名前はutf8mb4の別名にすべき」だの、散々な言われようでディスられてかわいそうな charset なんだけど、というか主に私がそう言ってる気もするんだけど、そろそろ utf8mb3 のエイリアスとしての utf8 は消え去ろうとしてるみたいなので、ここでちょっと勝手にフォローしておく。 UTF-8 エンコーディングの RFC は RFC3629で、ここで UTF-8 は最大4バイトと書かれている。 しかし、この RFC3629 の前のRFC2279では6バイトだった。 RFC3629 の日付は 2003/11 なので、つまり 2003/11 よりも前は UTF-8 の1文字のバイト数は最大6バイトだったのだ(少なくともRFC上では)。 MySQL が Unicode に対応したのはバ

    そろそろMySQLのutf8について一言いっとくか - tmtms のメモ
  • MySQLのZero Dateへの対処法

    MySQLのZero Dateへの対処法 MySQLの0000-00-00 00:00:00は使ってはならない - そーだいなるらくがき帳 このエントリで、MySQLのゼロが含まれる日付け、いわゆるZero Dateについての問題点が色々挙げられているのを見かけたので、手短に対処法を述べておきたい。 Zero Dateが存在する理由なぜそんな厄介なデータが存在するのかというのは、開発の経緯や互換性といった深淵な理由からなので気にしないで欲しい。まあ、人間は完璧ではないので、人間が作るプログラムも完璧ではないということだ。 当然ながらSQL標準から外れているものは、例外的な使い方をしたい場合を除き、使うべきではない。アンチパターンも使い方次第という話もあるが、例外的な使い方は基的に苦労が増えるので使うべきではない。 SQLモード実は、Zero DateはSQLモードで禁止できる。SQLモー

    MySQLのZero Dateへの対処法
    nakex1
    nakex1 2018/05/14
  • 【MySQL】DATE/DATETIME型の'0000-00-00'について整理してみる - Qiita

    ■ 結論 ● sql_mode が NO_ZERO_DATE (NO_ZERO_IN_DATE) であり、かつ STRICT_TRANS_TABLE (STRICT_ALL_TABLES) であるとき、'0000-00-00' は SELECT しかできない。 (MySQL5.7 以上のデフォルト値であるときの挙動) ● sql_mode が NO_ZERO_DATE (NO_ZERO_IN_DATE) でない、または STRICT_TRANS_TABLE (STRICT_ALL_TABLES) でないとき、NULLを許可しない列に限り、'0000-00-00' は IS NULL にもマッチする。 (MySQL5.6 以下のデフォルト値であるときの挙動) ■ はじめに ● MySQLでは0年0月0日、すなわち '0000-00-00' などといった日付を登録することができる。 https

    【MySQL】DATE/DATETIME型の'0000-00-00'について整理してみる - Qiita
    nakex1
    nakex1 2018/05/13
  • MySQLの0000-00-00 00:00:00は使ってはならない - そーだいなるらくがき帳

    結論 何がいいたいかといいますと0000-00-00 00:00:00があるとORMも死ぬし、DBマイグレーションツールも死ぬし、そもそもMySQLからポスグレにデータを持っていくこともFDWをすることも出来なくて死ぬのじゃ。— そーだい@初代ALF (@soudai1025) 2018年4月25日 色々困るので使わない。 理由 以下に理由を述べる SQL標準ではない 正論で殴った場合。 0000-00-00 00:00:00の仕様が難しい 0000-00-00 00:00:00 はMySQLの独自な仕様で NOT NULL制約のカラムではNULLと等価であり、NULLではない という仕様がある。 "NOT NULL として宣言された DATE および DATETIME カラムでは、次のようなステートメントを使用することで、特殊な日付 '0000-00-00' を検索できます"https:

    MySQLの0000-00-00 00:00:00は使ってはならない - そーだいなるらくがき帳
    nakex1
    nakex1 2018/05/13
  • MySQLの日本語コレーション - tmtms のメモ

    4月にMySQLの日語コレーションについて語り合う場に呼ばれていろいろ話を聞いてきました。すぐにブログを書こうと思ったんですが、はや2ヶ月経過…。 ときどき、自分がMySQLの文字コードに関して発表する際に、次のようなスライドをいれてるんですが、 MySQL 8.0 でとうとう日語コレーションが入ることになったのに、なんか期待してたのと違いました。 で、その辺の話を聞きました(2ヶ月も経ってるのでうろ覚え)。 Q. わざわざ日語ロケール作るんだったら日人が扱いやすいロケールにしてほしい utf8mb4_ja_0900_as_csはMySQLが独自に考えたものではない。Unicode規格に従っている。過去にいろいろ独自にやって失敗してきてるので、もう独自にやるのは避けたい。 ai(accent insensitive)で「ハ」=「パ」=「バ」になるのも、ci(case insensi

    MySQLの日本語コレーション - tmtms のメモ
    nakex1
    nakex1 2017/06/20