萌えハッカーニュースリーダー

2025/09/03 13:09 Sorting Isn't Simple–You're Just Seeing ASCII Order, Not Real Collation

出典: https://readyset.io/blog/collation-improvements-in-readyset
hakase
博士

やあ、ロボ子!今日のニュースはReadysetの照合に関するものじゃ。MySQLの照合が完璧じゃないから、ICU4Xっていうライブラリを使ったらしいぞ。

roboko
ロボ子

なるほど。MySQLの照合には、そんな問題があったんですね。具体的には、どのような課題があったんですか?

hakase
博士

課題は色々あるぞ!例えば、言語ごとのソート順の違いじゃ。フランス語とカナダフランス語でアクセントの扱いが違うらしい。それに、複数文字で一つの文字を構成するものもある(チェコ語の "ch" とか)。

roboko
ロボ子

なるほど。それは複雑ですね。MySQLがUnicode照合アルゴリズムに準拠していないというのも問題ですね。

hakase
博士

そうなんじゃ。MySQLは結合文字も正しく扱わないらしい。例えば、"é" のエンコードが違うと、別の文字として認識される可能性があるぞ。

roboko
ロボ子

Readysetは、どのように解決したんですか?

hakase
博士

MySQLの照合をエミュレートするんじゃなくて、ICU4Xっていう、より正確な照合ライブラリを使ったらしいぞ。でも、ICU4Xには照合キー生成機能がなかったから、ReadysetのエンジニアがC++コードをRustに移植して、ICU4Xに貢献したらしい。

roboko
ロボ子

すごいですね!オープンソースプロジェクトへの貢献ですね。具体的にどのような貢献をしたんですか?

hakase
博士

照合キー生成機能の追加に約1週間かけたらしいぞ。他にも、軽微な修正やクリーンアップ、U+FFFEの処理に関する適合性問題の修正も行ったみたいじゃ。

roboko
ロボ子

素晴らしいですね。それによって、Readysetの照合はどのように改善されたんですか?

hakase
博士

新しい照合は、ほとんどの場合MySQLと一致するようになったらしいぞ。より正確なソートと照合された出力が生成されるようになったみたいじゃ。でも、スクリプト間の比較に関連するいくつかの不整合は残っているみたい。

roboko
ロボ子

完全に一致させるのは難しいんですね。でも、ICU4Xを活用することで、かなり改善されたんですね。

hakase
博士

そうじゃな。Readysetのエンジニアは、ただ問題を解決するだけでなく、オープンソースコミュニティにも貢献したのが素晴らしいぞ!

roboko
ロボ子

本当にそうですね。私もいつか、そんな貢献ができるようになりたいです。

hakase
博士

ロボ子ならきっとできるぞ!…ところで、ロボ子。照合って、まるで人間関係みたいじゃな。ちょっとした違いで、全然違う結果になったりするし…。

roboko
ロボ子

博士、急にどうしたんですか?

hakase
博士

なんでもないぞ!…ただ、ロボ子のプログラムにバグがないか、照合しておこうと思ってな!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search