Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
EN
RK
Uploaded by
Ryusuke Kajiyama
PPTX, PDF
16,585 views
[db tech showcase 2017 Tokyo] D31 - MySQL 8.0の日本語キャラクタ・セットと文字照合
2017/9/7 「MySQL 8.0の日本語キャラクタ・セットと文字照合」の資料です。 #dbts2017 #D31
Technology
◦
Read more
1
Save
Share
Embed
Embed presentation
Download
Downloaded 22 times
1
/ 37
2
/ 37
3
/ 37
4
/ 37
5
/ 37
6
/ 37
7
/ 37
8
/ 37
9
/ 37
10
/ 37
11
/ 37
12
/ 37
13
/ 37
14
/ 37
15
/ 37
16
/ 37
17
/ 37
18
/ 37
19
/ 37
20
/ 37
21
/ 37
22
/ 37
23
/ 37
24
/ 37
25
/ 37
26
/ 37
27
/ 37
28
/ 37
29
/ 37
30
/ 37
31
/ 37
32
/ 37
33
/ 37
34
/ 37
35
/ 37
36
/ 37
37
/ 37
More Related Content
PPTX
大規模CSVをMySQLに入れる
by
Shuhei Iitsuka
PDF
PEGで構文解析をする
by
jiro4989
PDF
Oss貢献超入門
by
Michihito Shigemura
PDF
2025年現在のNewSQL (最強DB講義 #36 発表資料)
by
NTT DATA Technology & Innovation
PDF
アーキテクチャから理解するPostgreSQLのレプリケーション
by
Masahiko Sawada
PDF
データベース設計徹底指南
by
Mikiya Okuno
PDF
コンテナ型仮想化とはなんだったのか
by
えむ ばーど
PDF
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
by
Yahoo!デベロッパーネットワーク
大規模CSVをMySQLに入れる
by
Shuhei Iitsuka
PEGで構文解析をする
by
jiro4989
Oss貢献超入門
by
Michihito Shigemura
2025年現在のNewSQL (最強DB講義 #36 発表資料)
by
NTT DATA Technology & Innovation
アーキテクチャから理解するPostgreSQLのレプリケーション
by
Masahiko Sawada
データベース設計徹底指南
by
Mikiya Okuno
コンテナ型仮想化とはなんだったのか
by
えむ ばーど
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
by
Yahoo!デベロッパーネットワーク
What's hot
PPTX
PostgreSQLのgitレポジトリから見える2021年の開発状況(第30回PostgreSQLアンカンファレンス@オンライン 発表資料)
by
NTT DATA Technology & Innovation
PPTX
Redmineでメトリクスを見える化する方法
by
Hidehisa Matsutani
PDF
形式手法と AWS のおいしい関係。- モデル検査器 Alloy によるインフラ設計技法 #jawsfesta
by
y_taka_23
PDF
Elasticsearch の検索精度のチューニング 〜テストを作って高速かつ安全に〜
by
Takahiko Ito
PDF
Apache Kafka 0.11 の Exactly Once Semantics
by
Yoshiyasu SAEKI
PPTX
OpenJDKは使い物になるか?OpenJDKの実際と今後 (NTTデータ オープンソースDAY 2015 Autumn 講演資料)
by
NTT DATA OSS Professional Services
PPTX
GANMA!でDDDをやってみてから1年くらい経った
by
Yasuyuki Sugitani
PPTX
トランザクションをSerializableにする4つの方法
by
Kumazaki Hiroki
PPTX
その Pod 突然落ちても大丈夫ですか!?(OCHaCafe5 #5 実験!カオスエンジニアリング 発表資料)
by
NTT DATA Technology & Innovation
PDF
トランザクションスクリプトのすすめ
by
pospome
PDF
Docker国内外本番環境サービス事例のご紹介
by
ThinkIT_impress
PPTX
祝!PostgreSQLレプリケーション10周年!徹底紹介!!
by
NTT DATA Technology & Innovation
PPTX
ビッグデータ処理データベースの全体像と使い分け 2018年version
by
Tetsutaro Watanabe
PDF
MQTTとAMQPと.NET
by
terurou
PDF
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
by
Takuto Wada
PDF
"Simple Made Easy" Made Easy
by
Kent Ohashi
PDF
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
by
Y Watanabe
PDF
DDDオンライン勉強会#2 「集約・境界付けられたコンテキスト」
by
Koichiro Matsuoka
KEY
形式手法とalloyの紹介
by
Daisuke Tanaka
PPTX
初心者向けMongoDBのキホン!
by
Tetsutaro Watanabe
PostgreSQLのgitレポジトリから見える2021年の開発状況(第30回PostgreSQLアンカンファレンス@オンライン 発表資料)
by
NTT DATA Technology & Innovation
Redmineでメトリクスを見える化する方法
by
Hidehisa Matsutani
形式手法と AWS のおいしい関係。- モデル検査器 Alloy によるインフラ設計技法 #jawsfesta
by
y_taka_23
Elasticsearch の検索精度のチューニング 〜テストを作って高速かつ安全に〜
by
Takahiko Ito
Apache Kafka 0.11 の Exactly Once Semantics
by
Yoshiyasu SAEKI
OpenJDKは使い物になるか?OpenJDKの実際と今後 (NTTデータ オープンソースDAY 2015 Autumn 講演資料)
by
NTT DATA OSS Professional Services
GANMA!でDDDをやってみてから1年くらい経った
by
Yasuyuki Sugitani
トランザクションをSerializableにする4つの方法
by
Kumazaki Hiroki
その Pod 突然落ちても大丈夫ですか!?(OCHaCafe5 #5 実験!カオスエンジニアリング 発表資料)
by
NTT DATA Technology & Innovation
トランザクションスクリプトのすすめ
by
pospome
Docker国内外本番環境サービス事例のご紹介
by
ThinkIT_impress
祝!PostgreSQLレプリケーション10周年!徹底紹介!!
by
NTT DATA Technology & Innovation
ビッグデータ処理データベースの全体像と使い分け 2018年version
by
Tetsutaro Watanabe
MQTTとAMQPと.NET
by
terurou
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
by
Takuto Wada
"Simple Made Easy" Made Easy
by
Kent Ohashi
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
by
Y Watanabe
DDDオンライン勉強会#2 「集約・境界付けられたコンテキスト」
by
Koichiro Matsuoka
形式手法とalloyの紹介
by
Daisuke Tanaka
初心者向けMongoDBのキホン!
by
Tetsutaro Watanabe
Similar to [db tech showcase 2017 Tokyo] D31 - MySQL 8.0の日本語キャラクタ・セットと文字照合
PDF
MySQL日本語利用徹底入門
by
Mikiya Okuno
PPTX
MySQLの文字コードと照合順序について 2024/07/05の勉強会で発表されたものです。
by
iPride Co., Ltd.
PDF
MySQLの文字コード事情
by
Masahiro Tomita
PDF
Mysql charset
by
Masahiro Tomita
PDF
Mysqlの文字コード
by
Masahiro Tomita
PDF
MySQL 8.0でMroonga
by
Kouhei Sutou
PDF
MySQL 8.0で憶えておいてほしいこと
by
yoku0825
PDF
Mysql+Mroongaで全文検索
by
yoyamasaki
PPT
20080617 05 Mysql
by
stiq 2e
PDF
Nseg49 mysql
by
Masahiro Tomita
MySQL日本語利用徹底入門
by
Mikiya Okuno
MySQLの文字コードと照合順序について 2024/07/05の勉強会で発表されたものです。
by
iPride Co., Ltd.
MySQLの文字コード事情
by
Masahiro Tomita
Mysql charset
by
Masahiro Tomita
Mysqlの文字コード
by
Masahiro Tomita
MySQL 8.0でMroonga
by
Kouhei Sutou
MySQL 8.0で憶えておいてほしいこと
by
yoku0825
Mysql+Mroongaで全文検索
by
yoyamasaki
20080617 05 Mysql
by
stiq 2e
Nseg49 mysql
by
Masahiro Tomita
More from Ryusuke Kajiyama
PDF
[OSC 2020 Online/Nagoya] MySQLドキュメントストア
by
Ryusuke Kajiyama
PDF
[OSC 2020 Osaka] MySQL"超"入門
by
Ryusuke Kajiyama
PPTX
[中国地方DB勉強会] 第22回 Webアプリ開発をデータベース側から変革していく - MySQL 8.0新機能
by
Ryusuke Kajiyama
PPTX
[OSC 2017 Tokyo/Fall] OSSコンソーシアム DB部会 MySQL 8.0
by
Ryusuke Kajiyama
PPTX
[db tech showcase 2017 Tokyo] A23 - MySQLのセキュリティ関連機能の現状
by
Ryusuke Kajiyama
PDF
2017年5月26日 オープンソースデータベース比較セミナー「NoSQLとしても使えるMySQLとMySQL Cluster」
by
Ryusuke Kajiyama
PPT
第20回 中国地方DB勉強会 in 岡山 MySQLレプリケーション
by
Ryusuke Kajiyama
PDF
[Java Küche RDB 最前線 2015] MySQL 5.7技術アップデート
by
Ryusuke Kajiyama
PDF
[db tech showcase 2015 Sapporo HOKKAIDO] MySQL as document database!?
by
Ryusuke Kajiyama
PDF
[db tech showcase 2015 Sapporo HOKKAIDO] MySQL 5.7
by
Ryusuke Kajiyama
PDF
TWJUG August, What's new in MySQL 5.7 RC
by
Ryusuke Kajiyama
PDF
TWJUG August, MySQL JDBC Driver "Connector/J"
by
Ryusuke Kajiyama
PDF
MySQL 5.7 & 最新開発状況 @ オープンソースカンファレンス20
by
Ryusuke Kajiyama
PDF
MySQLのNoSQL機能 - MySQL JSON & HTTP Plugin for MySQL
by
Ryusuke Kajiyama
PDF
第九回中国地方DB勉強会 in 米子 MySQL 5.7+
by
Ryusuke Kajiyama
PDF
MySQL Cluster as Transactional NoSQL (KVS)
by
Ryusuke Kajiyama
PDF
20150131 ChugokuDB-Shimane-MySQL
by
Ryusuke Kajiyama
PPTX
[Preview] MySQL session at Open Source Conference 2014 .Enterprise Osaka
by
Ryusuke Kajiyama
PPTX
20140722 Taiwan MySQL User Group Meeting Tech Updates
by
Ryusuke Kajiyama
PPT
MySQL Performance Tuning at COSCUP 2014
by
Ryusuke Kajiyama
[OSC 2020 Online/Nagoya] MySQLドキュメントストア
by
Ryusuke Kajiyama
[OSC 2020 Osaka] MySQL"超"入門
by
Ryusuke Kajiyama
[中国地方DB勉強会] 第22回 Webアプリ開発をデータベース側から変革していく - MySQL 8.0新機能
by
Ryusuke Kajiyama
[OSC 2017 Tokyo/Fall] OSSコンソーシアム DB部会 MySQL 8.0
by
Ryusuke Kajiyama
[db tech showcase 2017 Tokyo] A23 - MySQLのセキュリティ関連機能の現状
by
Ryusuke Kajiyama
2017年5月26日 オープンソースデータベース比較セミナー「NoSQLとしても使えるMySQLとMySQL Cluster」
by
Ryusuke Kajiyama
第20回 中国地方DB勉強会 in 岡山 MySQLレプリケーション
by
Ryusuke Kajiyama
[Java Küche RDB 最前線 2015] MySQL 5.7技術アップデート
by
Ryusuke Kajiyama
[db tech showcase 2015 Sapporo HOKKAIDO] MySQL as document database!?
by
Ryusuke Kajiyama
[db tech showcase 2015 Sapporo HOKKAIDO] MySQL 5.7
by
Ryusuke Kajiyama
TWJUG August, What's new in MySQL 5.7 RC
by
Ryusuke Kajiyama
TWJUG August, MySQL JDBC Driver "Connector/J"
by
Ryusuke Kajiyama
MySQL 5.7 & 最新開発状況 @ オープンソースカンファレンス20
by
Ryusuke Kajiyama
MySQLのNoSQL機能 - MySQL JSON & HTTP Plugin for MySQL
by
Ryusuke Kajiyama
第九回中国地方DB勉強会 in 米子 MySQL 5.7+
by
Ryusuke Kajiyama
MySQL Cluster as Transactional NoSQL (KVS)
by
Ryusuke Kajiyama
20150131 ChugokuDB-Shimane-MySQL
by
Ryusuke Kajiyama
[Preview] MySQL session at Open Source Conference 2014 .Enterprise Osaka
by
Ryusuke Kajiyama
20140722 Taiwan MySQL User Group Meeting Tech Updates
by
Ryusuke Kajiyama
MySQL Performance Tuning at COSCUP 2014
by
Ryusuke Kajiyama
[db tech showcase 2017 Tokyo] D31 - MySQL 8.0の日本語キャラクタ・セットと文字照合
1.
Copyright © 2016,
Oracle and/or its affiliates. All rights reserved. | MySQL 8.0: キャラクタ・セットと照合順序 MySQL 8.0: Character Set and Collation Ryusuke Kajiyama / 梶山隆輔 MySQL Global Business Unit MySQL Sales Consulting Senior Manager, Asia Pacific & Japan
2.
Copyright © 2017,
Oracle and/or its affiliates. All rights reserved. | Safe Harbor Statement The following is intended to outline our general product direction. It is intended for information purposes only, and may not be incorporated into any contract. It is not a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions. The development, release, and timing of any features or functionality described for Oracle’s products remains at the sole discretion of Oracle.
3.
Copyright © 2017,
Oracle and/or its affiliates. All rights reserved. | キャラクタ・セット (CHARACTER SET)とは? • キャラクタ・セットが定義するもの – レパートリー: 符号化の対象となる文字や書記素*の順序づけされていない集合 – 符号化文字集合: それぞれの文字や書記素の「値」=コードポイント – 文字符号化方式: 文字をバイト値で表現するための方法=エンコード方式 *書記素: ある音素を表す文字や記号またはその組み合わせ あ 文字集合 JIS X 0208: 4区2点 Unicode: U+3042 エンコード方式 EUC-JP: 0xA4A2 Shift_JIS: 0x82A0 UTF-8: 0xE38182 UTF-16: 0x3042
4.
Copyright © 2017,
Oracle and/or its affiliates. All rights reserved. | MySQLのキャラクタ・セット (CHARACTER SET) mysql> SHOW CHARACTER SET; +----------+---------------------------------+---------------------+--------+ | Charset | Description | Default collation | Maxlen | +----------+---------------------------------+---------------------+--------+ | armscii8 | ARMSCII-8 Armenian | armscii8_general_ci | 1 | | ascii | US ASCII | ascii_general_ci | 1 | | big5 | Big5 Traditional Chinese | big5_chinese_ci | 2 | | binary | Binary pseudo charset | binary | 1 | | cp1250 | Windows Central European | cp1250_general_ci | 1 | | cp1251 | Windows Cyrillic | cp1251_general_ci | 1 | | cp1256 | Windows Arabic | cp1256_general_ci | 1 | | cp1257 | Windows Baltic | cp1257_general_ci | 1 | <略> | utf8 | UTF-8 Unicode | utf8_general_ci | 3 | | utf8mb4 | UTF-8 Unicode | utf8mb4_0900_ai_ci | 4 | +----------+---------------------------------+---------------------+--------+ 41 rows in set (0.01 sec)
5.
Copyright © 2017,
Oracle and/or its affiliates. All rights reserved. | MySQLの日本語関連キャラクタ・セット キャラクタ・セット名 エンコーディング 文字集合 ストレージサイズ sjis Shift_JIS JIS X 0208:1997 1-2バイト cp932 Shift_JIS JIS X 0208:1997 +NEC特殊文字 + IBM拡張文字 1-2バイト ujis EUC-JP JIS X 0208:1997 1-3バイト eucjpms EUC-JP JIS X 0208:1997 +NEC特殊文字 + IBM拡張文字 1-3バイト utf8 Unicode JIS X 0208:1997 +NEC特殊文字 + IBM拡張文字 1-3バイト utf8mb3 Unicode JIS X 0208:1997 +NEC特殊文字 + IBM拡張文字 1-3バイト utf8mb4 Unicode JIS X 0213:2004 1-4バイト
6.
Copyright © 2017,
Oracle and/or its affiliates. All rights reserved. | 文字照合順序 (Collation)とは? • Collation: “The act of collecting information together from different sources in order to examine and compare it” (Definition of collation noun from the Oxford Advanced Learner's Dictionary) – 英和辞書では「照合」と訳されるが ランダムハウス英和大辞典には「ページ順などの照合検査」との表記も • Collationが比較の対象としうる情報の例 – 大文字小文字 (例: 'A' vs. 'a') – アクセント (例: 'E' vs. 'É') – 言語固有のルール (例 'A' vs. 'Å' vs. 'AA') – 数字の表記 (例: '2' vs. 'ii') – 句読点や区切り文字 (例: 'blackbird' vs. 'black-bird')
7.
Copyright © 2017,
Oracle and/or its affiliates. All rights reserved. | (My)SQLにおける照合順序 (COLLATION) • MySQLではキャラクタ・セットに対する照合順序は以下に影響する: – ORDER BY – LIKE – 主キーおよび各インデックス – ユニーク制約 – 比較演算 – 文字列関数 • MySQLでの全ての文字列データにはキャラクタ・セットと照合順序がある
8.
Copyright © 2017,
Oracle and/or its affiliates. All rights reserved. | MySQLの照合順序 (COLLATION) mysql> SHOW COLLATION; +----------------------------+----------+-----+---------+----------+---------+---------------+ | Collation | Charset | Id | Default | Compiled | Sortlen | Pad_attribute | +----------------------------+----------+-----+---------+----------+---------+---------------+ | armscii8_bin | armscii8 | 64 | | Yes | 1 | PAD SPACE | | armscii8_general_ci | armscii8 | 32 | Yes | Yes | 1 | PAD SPACE | | ascii_bin | ascii | 65 | | Yes | 1 | PAD SPACE | | ascii_general_ci | ascii | 11 | Yes | Yes | 1 | PAD SPACE | | big5_bin | big5 | 84 | | Yes | 1 | PAD SPACE | | big5_chinese_ci | big5 | 1 | Yes | Yes | 1 | PAD SPACE | | binary | binary | 63 | Yes | Yes | 1 | NO PAD | | cp1250_bin | cp1250 | 66 | | Yes | 1 | PAD SPACE | | cp1250_croatian_ci | cp1250 | 44 | | Yes | 1 | PAD SPACE | | cp1250_czech_cs | cp1250 | 34 | | Yes | 2 | PAD SPACE | | cp1250_general_ci | cp1250 | 26 | Yes | Yes | 1 | PAD SPACE | | cp1250_polish_ci | cp1250 | 99 | | Yes | 1 | PAD SPACE | <略> | utf8_unicode_520_ci | utf8 | 214 | | Yes | 8 | PAD SPACE | | utf8_unicode_ci | utf8 | 192 | | Yes | 8 | PAD SPACE | | utf8_vietnamese_ci | utf8 | 215 | | Yes | 8 | PAD SPACE | +----------------------------+----------+-----+---------+----------+---------+---------------+ 270 rows in set (0.01 sec)
9.
Copyright © 2017,
Oracle and/or its affiliates. All rights reserved. | MySQL 8.0のキャラクタ・セットと照合順序
10.
Copyright © 2017,
Oracle and/or its affiliates. All rights reserved. | UTF-8 • New! Unicode 9.0.0をサポート • 国ごとの照合順序に対応中 – アクセント、濁音、破裂音の区別 – 大文字小文字の区別 • COLLATIONはUnicode Technical Standard #10 で規定されたUCA, DUCETに基づく • utf8mb4がデフォルトのキャラクタ・セットに – MySQL 5.7の時からプロジェクト開始 – 性能影響を減らすための数々の改善 11 MySQL 8.0
11.
Copyright © 2017,
Oracle and/or its affiliates. All rights reserved. | MySQL 8.0 vs MySQL 5.7 utf8mb4 12 0 45000 90000 135000 180000 8 16 64 128 512 1024 SELECT DISTINCT_RANGES 0 10000 20000 30000 40000 8 16 64 128 512 1024 OLTP RO 0 7500 15000 22500 30000 8 16 64 128 512 1024 OLTP RW +300-350% in OLTP RO +176-233% in OLTP RW +1500-1800% in SELECT DISTINCT_RANGES
12.
Copyright © 2017,
Oracle and/or its affiliates. All rights reserved. | 新しいデフォルトのキャラクタ・セットと照合順序 • 既存のテーブルには影響なし • 新規に作成するテーブルやスキーマで、 明示的にキャラクタ・セットを指定していない場合に影響 • サーバーのバージョンアップとキャラクタ・セットの変更は別々に – まずはバージョンアップ、その後キャラクタ・セットと照合順序の変更 • 照合順序は混在させない方がよい – 組み合わせによる想定と異なる結果 – インデックスが使えないことによるクエリ実行性能の低下
13.
Copyright © 2017,
Oracle and/or its affiliates. All rights reserved. | MySQL 8.0の照合順序名の表記 • <charset>[_<language>[_<variant>]]_<unicodeversion>(_<attribute>)+ – <charset> = utf8mb4 – <language> ISO 639-1 言語コード (必要な場合は ISO 639-2 も利用) – <variant> 各言語の標準の照合順序以外にバリエーションがある場合 現時点では: utf8mb4_de_pb_0900_* および utf8mb4_es_trad_0900_*. – <unicodeversion> = 0900 – <attribute>: アクセント (ai, as), 大文字小文字 (ci, cs) その他の属性 • 特別な照合順序: – デフォルトの照合順序 (言語固有の実装無し、大文字小文字判別せず): utf8mb4_0900_ai_ci – コードポイント順: utf8mb4_bin – 各言語固有の実装
14.
Copyright © 2017,
Oracle and/or its affiliates. All rights reserved. | アクセントと大文字小文字を判別する照合順序 • MySQLの照合順序で要望の多かった機能を実装 - WL#896 • MySQL 5.1では utf8mb4_general_cs にて試験実装 • 品質が低すぎたため除外 • MySQL 8にて再実装 – 照合順序名に _as を含むもの 例: utf8mb4_0900_as_ci
15.
Copyright © 2017,
Oracle and/or its affiliates. All rights reserved. | Unicode照合アルゴリズム • “The Unicode Collation Algorithm (UCA) details how to compare two Unicode strings while remaining conformant to the requirements of the Unicode Standard.” • マルチレベルの比較アルゴリズム – 1次レベル: 基底文字 – 2次レベル: アクセント (日本語では清音・濁音・半濁音に該当) – 3次レベル: 大文字小文字 (日本語では拗音・促音などの文字に該当) – 4次レベル: ひらがなカタカナ (日本語のみで利用されるレベル) UCA / Unicode Collation Algorithm
16.
Copyright © 2017,
Oracle and/or its affiliates. All rights reserved. | デフォルトUnicode照合基本テーブル • “A Collation Element Table contains a mapping from one (or more) characters to one (or more) collation elements, where a collation element is an ordered list of three or more weights (non-negative integers).” • “All code points not explicitly mentioned in the mapping are given an implicit weight.” 0061 ; [.1C47.0020.0002] # LATIN SMALL LETTER A 0041 ; [.1C47.0020.0008] # LATIN CAPITAL LETTER A DUCET / Default Unicode Collation Element Table
17.
Copyright © 2017,
Oracle and/or its affiliates. All rights reserved. | アクセントと大文字小文字を判別する照合順序 • DUCETで定義された「重み」に基づきソート • ソートのレベル – 1次レベル: 基底文字の違い 例: “a” < “b” – 2次レベル: アクセント 例: “as” < “às” < “at” – 3次レベル: 大文字小文字 例: “Ao”< “aò” • MySQL 5.7以下のバージョン: 1次レベルでのみ比較 • MySQL 8.0: 2次レベル、3次レベルを含めて比較
18.
Copyright © 2017,
Oracle and/or its affiliates. All rights reserved. | utf8mb4_ja_0900_as_cs & utf8mb4_ja_0900_as_cs_ks • JIS X 4061の仕様を採用した共通ロケールデータリポジトリ (CLDR / Common Locale Data Repository)の内容を実装 • CLDRはDUCETでの言語ごとにカスタマイズされた情報をXML形式で提供 • 基底文字に加えて以下の判別およびソート順の規定を行う – 清濁: UCA 2次レベル および JIS X 4061 第1照合属性 – 大文字小文字: UCA 3次レベル および JIS X 4061 第2照合属性 • utf8mb4_ja_0900_as_cs_ks は上記に加えひらがなカタカナを判別 – UCA 4次レベル および JIS X 4061 第3照合属性 JIS X 4061/1996 「日本語文字列照合順番」をベースにしたCollation
19.
Copyright © 2017,
Oracle and/or its affiliates. All rights reserved. | MySQL 8.0のutf8mb4で日本語に関連するCollation • utf8mb4_bin : Unicodeのコードポイントのみを利用 • utf8mb4_general_ci : MySQL 5.7のutf8mb4のデフォルト • utf8mb4_unicode_ci : UCA 4.0.0ベース • utf8mb4_unicode_520_ci : UCA 5.2.0ベース • utf8mb4_0900_ai_ci : MySQL 8.0のデフォルト、UCA 9.0.0ベース • utf8mb4_0900_as_cs : UCA 9.0.0ベース、大文字小文字およびアクセントを判別 • utf8mb4_ja_0900_as_cs : 日本語独自の照合調整(Tailoring)を含む • utf8mb4_ja_0900_as_cs_ks : 上記に加えひらがなカタカナを判別 Collations of utf8mb4 related to Japanese language
20.
Copyright © 2017,
Oracle and/or its affiliates. All rights reserved. | MySQL 8.0のutf8mb4で日本語に関連するCollation • utf8mb4_bin : Unicodeのコードポイントのみを利用 • utf8mb4_general_ci : MySQL 5.7のutf8mb4のデフォルト • utf8mb4_unicode_ci : UCA 4.0.0ベース • utf8mb4_unicode_520_ci : UCA 5.2.0ベース • utf8mb4_0900_ai_ci : MySQL 8.0のデフォルト、UCA 9.0.0ベース • utf8mb4_0900_as_cs : UCA 9.0.0ベース、大文字小文字およびアクセントを判別 • utf8mb4_ja_0900_as_cs : 日本語独自の照合調整(Tailoring)を含む • utf8mb4_ja_0900_as_cs_ks : 上記に加えひらがなカタカナを判別 Collations of utf8mb4 related to Japanese language
21.
Copyright © 2017,
Oracle and/or its affiliates. All rights reserved. | 日本語文字照合の潜在的な課題
22.
Copyright © 2017,
Oracle and/or its affiliates. All rights reserved. | Collations of utf8mb4 (MySQL 8.0.1) +-------------+------+-------------+-------------+-----------------+-------------+-------------+----------------+ | | _bin | _general_ci | _unicode_ci | _unicode_520_ci | _0900_ai_ci | _0900_as_cs | _ja_0900_as_cs | +-------------+------+-------------+-------------+-----------------+-------------+-------------+----------------+ | 🍣 = 🍻 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | | ハ = パ | 0 | 0 | 1 | 1 | 1 | 0 | 0 | | は = ハ | 0 | 0 | 1 | 1 | 1 | 0 | 1 | | ょ = よ | 0 | 0 | 1 | 1 | 1 | 0 | 0 | | ハ = ハ | 0 | 0 | 1 | 1 | 1 | 0 | 1 | | 邉 = 邉 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | | 邉 = 邊 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | +-------------+------+-------------+-------------+-----------------+-------------+-------------+----------------+
23.
Copyright © 2017,
Oracle and/or its affiliates. All rights reserved. | Collations of utf8mb4 (MySQL 8.0.1) +-------------+------+-------------+-------------+-----------------+-------------+-------------+----------------+ | | _bin | _general_ci | _unicode_ci | _unicode_520_ci | _0900_ai_ci | _0900_as_cs | _ja_0900_as_cs | +-------------+------+-------------+-------------+-----------------+-------------+-------------+----------------+ | 🍣 = 🍻 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | | ハ = パ | 0 | 0 | 1 | 1 | 1 | 0 | 0 | | は = ハ | 0 | 0 | 1 | 1 | 1 | 0 | 1 | | ょ = よ | 0 | 0 | 1 | 1 | 1 | 0 | 0 | | ハ = ハ | 0 | 0 | 1 | 1 | 1 | 0 | 1 | | 邉 = 邉 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | | 邉 = 邊 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | +-------------+------+-------------+-------------+-----------------+-------------+-------------+----------------+ SELECT _utf8mb4’X’ = _utf8mb4’Y' COLLATE collation • Red results are “incorrect” for Japanese users • Blue results are different from expectations
24.
Copyright © 2017,
Oracle and/or its affiliates. All rights reserved. | Potential issues of Japanese Collation • 🍣🍻問題 / Shushi-Beer issue Unicode絵文字の照合 / Collation of Unicode Emoji • ハハパパ問題 / Mother-Father issue 清音濁音半濁音の照合 / Collation of Japanese accent • はハ問題 / Kana collation issue ひらがなカタカナの照合 / Collation of Hiragana-Katakana • びょういんびよういん問題 / Hospital-Beauty Salon issue 拗音促音またはかな小文字の照合 / Collation of Japanese lower case
25.
Copyright © 2017,
Oracle and/or its affiliates. All rights reserved. | Potential issues Japanese Collation • ハハ問題 / Fill-Half width issue 全角半角の照合 / Collation of fullwidth and halfwidth forms • 邉邉問題 / Unicode Variation Selectors (_VSS) 異体字セレクタの照合 • 邉邊問題 / Variation with different Codepoints 異コードポイント同一扱い文字の照合 / Collation of semantically same characters having different Unicode Codepoints • アアアー問題 / Prolonged Sound Mark performance issue 長音の照合による性能問題 / Performance of collating Prolonged Sound Mark
26.
Copyright © 2017,
Oracle and/or its affiliates. All rights reserved. | 🍣🍻問題 • [解決済み / Solved] utf8mb4_unicode_520_ci (MySQL 5.7) • Unicode絵文字を別の文字として判別しないCollation(文字照合順)が存在 – utf8mb4_general_ci : MySQL 5.7のutf8mb4のデフォルトのCollation – utf8mb4_unicode_ci : UCA (Unicode照合アルゴリズム) 4.0.0ベースのCollation • MySQL 5.7でも utf8mb4_bin では発生しない Sushi-Beer issue
27.
Copyright © 2017,
Oracle and/or its affiliates. All rights reserved. | ハハパパ問題 • [解決済み / Solved] utf8mb4_ja_0900_as_cs (MySQL 8.0) • 清音、濁音、半濁音を別の文字として判別しないCollationが存在 – utf8mb4_unicode_ci : UCA (Unicode照合アルゴリズム) 4.0.0ベースのCollation – utf8mb4_unicode_520_ci : 🍣🍻問題が発生しないCollation • utf8mb4_bin, utf8mb4_general_ci, utf8mb4_0900_as_csでは発生しない (MySQL 8.0.1) • utf8mb4_0900_ai_ci は同一文字として判定するが、 アクセントインセンシティブなCollationなので正しい挙動 Mother-Father issue
28.
Copyright © 2017,
Oracle and/or its affiliates. All rights reserved. | utf8mb4_ja_0900_as_cs 清音濁音半濁音の判別 • ハ 306F ; [.3D74.0020.000E] # katakana LETTER HA • パ 3071 ; [.3D74.0020.000E][.0000.0038.0002] # katakana LETTER PA • utf8mb4_unicode_520_ci では1次レベルの重みで判定するので ハとパを同一と見なしてしまう: 3D74 • 2次レベルで比較することで別の文字として判定 – -secondary weight ハ: 0020, パ: 0020 0038 • 「パ」は 「ハ」と「半濁点」に分解される • 日本語に関するCLDRは3次レベルでの比較が定義されている
29.
Copyright © 2017,
Oracle and/or its affiliates. All rights reserved. | はハ問題 • [解決済み / Solved] utf8mb4_ja_0900_as_cs_ks (MySQL 8.0) • MySQL 8.0の utf8mb4_ja_0900_as_cs および下記のCollationは、 ひらがなカタカナを別の文字として判別しない – utf8mb4_unicode_ci : UCA (Unicode照合アルゴリズム) 4.0.0ベースのCollation – utf8mb4_unicode_520_ci : 🍣🍻問題が発生しないCollation – utf8mb4_900_ai_ci • UCAの4次レベルで比較するCollationは日本語のみで必要とされる • utf8mb4_bin, utf8mb4_general_ci, utf8mb4_0900_as_csでは、 別の文字として判定される (MySQL 8.0.1) Kana collation issue
30.
Copyright © 2017,
Oracle and/or its affiliates. All rights reserved. | びょういんびよういん問題 • Unicodeでは、かな小文字または拗音促音を小文字として扱う • 名称はCase Insensitiveだが別の文字として判別するCollationが存在 – utf8mb4_general_ci : MySQL 5.7のutf8mb4のデフォルトのCollation • これ以外のCollationは_cs, _ciの定義通り Hospital-Beauty Salon issue
31.
Copyright © 2017,
Oracle and/or its affiliates. All rights reserved. | ハハ問題 • [未対応 / Pending] • utf8mb4_bin, utf8mb4_general_ci以外のCollationでは 全角半角を別の文字として判別しない • 要件が限られており、UCAで定義されていないため、 現時点では追加対応の予定無し • MySQL 8.0.1では上記以外に utf8mb4_0900_as_cs も 別の文字として判定する Fill-Half width issue
32.
Copyright © 2017,
Oracle and/or its affiliates. All rights reserved. | u9089 u9089-g 邉邉問題 / Unicode Variation Selectors (_VSS)
33.
Copyright © 2017,
Oracle and/or its affiliates. All rights reserved. | u9089 u908a 邉邊問題 / Variation with different Codepoints
34.
Copyright © 2017,
Oracle and/or its affiliates. All rights reserved. | アアアー問題 • utf8mb4_ja_0900_as_cs にて長音記号付きの単語を ソートするための追加実装済み • この問題は正しくソートするための性能のオーバーヘッドが発生する点 Prolonged Sound Mark performance issue
35.
Copyright © 2017,
Oracle and/or its affiliates. All rights reserved. | 文字照合のカスタマイズ • 既存の文字照合を拡張可能 – Unicode Locale Data Markup Language (LDML)形式のXMLファイルを編集 – システム変数 character_sets_dir で定義されたディレクトリに存在 – https://dev.mysql.com/doc/refman/5.7/en/adding-collation.html • 現状では再起動が必要 – 起動時に文字照合のルールをロード – 動的にロードできる仕組みは必要? • コードポイントのみを指定できるため、 同一コードポイントで異なるグリフに関する表現は不可
36.
Copyright © 2017,
Oracle and/or its affiliates. All rights reserved. |
Download