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
Submit search
EN
RK
Uploaded by
Ryusuke Kajiyama
PPTX, PDF
16,540 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
PDF
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
by
NTT DATA Technology & Innovation
PDF
継続使用と新規追加したRedmine Plugin
by
Mei Nakamura
PDF
ある工場の Redmine 2022 〜ある工場の Redmine 5.0 バージョンアップ〜 ( Redmine of one plant 2022 ...
by
Kohei Nakamura
PDF
テスト文字列に「うんこ」と入れるな
by
Kentaro Matsui
PPTX
C#で速度を極めるいろは
by
Core Concept Technologies
PDF
Zynq mp勉強会資料
by
一路 川染
PDF
モノタロウECプラットフォームを支える開発運用モダナイゼーションの取り組み #devsumi
by
株式会社MonotaRO Tech Team
PDF
Docker volume基礎/Project Longhorn紹介
by
Masahito Zembutsu
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
by
NTT DATA Technology & Innovation
継続使用と新規追加したRedmine Plugin
by
Mei Nakamura
ある工場の Redmine 2022 〜ある工場の Redmine 5.0 バージョンアップ〜 ( Redmine of one plant 2022 ...
by
Kohei Nakamura
テスト文字列に「うんこ」と入れるな
by
Kentaro Matsui
C#で速度を極めるいろは
by
Core Concept Technologies
Zynq mp勉強会資料
by
一路 川染
モノタロウECプラットフォームを支える開発運用モダナイゼーションの取り組み #devsumi
by
株式会社MonotaRO Tech Team
Docker volume基礎/Project Longhorn紹介
by
Masahito Zembutsu
What's hot
PDF
Nervesが開拓する「ElixirでIoT」の新世界
by
Hideki Takase
PDF
20221117_クラウドネイティブ向けYugabyteDB活用シナリオ
by
Masaki Yamakawa
PPTX
実践!Django + GraphQL 実装
by
ssuseraf19bf
PDF
事例から探る、Redmineの機能とよりよい運用
by
Go Maeda
PDF
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
by
NTT DATA Technology & Innovation
PPTX
10分でわかるOpenAPI V3
by
Kazuchika Sekiya
PDF
.NET 6 時代のデスクトップ アプリケーション開発
by
Fujio Kojima
PDF
20分でわかるgVisor入門
by
Shuji Yamada
PDF
チケット駆動開発の解説~タスク管理からプロセス改善へ
by
akipii Oga
PDF
Unified JVM Logging
by
Yuji Kubota
PDF
Vivado hls勉強会4(axi4 master)
by
marsee101
PDF
ホットペッパービューティーにおけるモバイルアプリ向けAPIのBFF/Backend分割
by
Recruit Lifestyle Co., Ltd.
PDF
SpectreとMeltdown:最近のCPUの深い話
by
LINE Corporation
PDF
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
by
Jun-ichi Sakamoto
PDF
CyberAgent における OSS の CI/CD 基盤開発 myshoes #CICD2021
by
whywaita
PDF
Node-REDのworldmapの活用
by
OSgeo Japan
PDF
「Redmineの運用パターン集~私に聞くな、チケットシステムに聞け」
by
akipii Oga
PDF
【BS3】Visual Studio 2022 と .NET 6 での Windows アプリ開発技術の紹介
by
日本マイクロソフト株式会社
PPTX
講演1 Redmine導入のアンチパターン
by
Hidehisa Matsutani
PDF
Hyper-V Replica
by
Naoki Abe
Nervesが開拓する「ElixirでIoT」の新世界
by
Hideki Takase
20221117_クラウドネイティブ向けYugabyteDB活用シナリオ
by
Masaki Yamakawa
実践!Django + GraphQL 実装
by
ssuseraf19bf
事例から探る、Redmineの機能とよりよい運用
by
Go Maeda
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
by
NTT DATA Technology & Innovation
10分でわかるOpenAPI V3
by
Kazuchika Sekiya
.NET 6 時代のデスクトップ アプリケーション開発
by
Fujio Kojima
20分でわかるgVisor入門
by
Shuji Yamada
チケット駆動開発の解説~タスク管理からプロセス改善へ
by
akipii Oga
Unified JVM Logging
by
Yuji Kubota
Vivado hls勉強会4(axi4 master)
by
marsee101
ホットペッパービューティーにおけるモバイルアプリ向けAPIのBFF/Backend分割
by
Recruit Lifestyle Co., Ltd.
SpectreとMeltdown:最近のCPUの深い話
by
LINE Corporation
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
by
Jun-ichi Sakamoto
CyberAgent における OSS の CI/CD 基盤開発 myshoes #CICD2021
by
whywaita
Node-REDのworldmapの活用
by
OSgeo Japan
「Redmineの運用パターン集~私に聞くな、チケットシステムに聞け」
by
akipii Oga
【BS3】Visual Studio 2022 と .NET 6 での Windows アプリ開発技術の紹介
by
日本マイクロソフト株式会社
講演1 Redmine導入のアンチパターン
by
Hidehisa Matsutani
Hyper-V Replica
by
Naoki Abe
Similar to [db tech showcase 2017 Tokyo] D31 - MySQL 8.0の日本語キャラクタ・セットと文字照合
PDF
MySQL日本語利用徹底入門
by
Mikiya Okuno
PDF
MySQLの文字コード事情
by
Masahiro Tomita
PDF
Mysqlの文字コード
by
Masahiro Tomita
PDF
MySQL 8.0で憶えておいてほしいこと
by
yoku0825
PDF
MySQL 8.0でMroonga
by
Kouhei Sutou
PDF
Mysql+Mroongaで全文検索
by
yoyamasaki
PDF
Mysql charset
by
Masahiro Tomita
PDF
Nseg49 mysql
by
Masahiro Tomita
PPTX
MySQLの文字コードと照合順序について 2024/07/05の勉強会で発表されたものです。
by
iPride Co., Ltd.
PPT
20080617 05 Mysql
by
stiq 2e
MySQL日本語利用徹底入門
by
Mikiya Okuno
MySQLの文字コード事情
by
Masahiro Tomita
Mysqlの文字コード
by
Masahiro Tomita
MySQL 8.0で憶えておいてほしいこと
by
yoku0825
MySQL 8.0でMroonga
by
Kouhei Sutou
Mysql+Mroongaで全文検索
by
yoyamasaki
Mysql charset
by
Masahiro Tomita
Nseg49 mysql
by
Masahiro Tomita
MySQLの文字コードと照合順序について 2024/07/05の勉強会で発表されたものです。
by
iPride Co., Ltd.
20080617 05 Mysql
by
stiq 2e
More from Ryusuke Kajiyama
PDF
MySQLのNoSQL機能 - MySQL JSON & HTTP Plugin for MySQL
by
Ryusuke Kajiyama
PDF
20150131 ChugokuDB-Shimane-MySQL
by
Ryusuke Kajiyama
PPTX
[OSC 2017 Tokyo/Fall] OSSコンソーシアム DB部会 MySQL 8.0
by
Ryusuke Kajiyama
PPTX
[中国地方DB勉強会] 第22回 Webアプリ開発をデータベース側から変革していく - MySQL 8.0新機能
by
Ryusuke Kajiyama
PDF
TWJUG August, What's new in MySQL 5.7 RC
by
Ryusuke Kajiyama
PDF
MySQL 5.7 & 最新開発状況 @ オープンソースカンファレンス20
by
Ryusuke Kajiyama
PDF
第九回中国地方DB勉強会 in 米子 MySQL 5.7+
by
Ryusuke Kajiyama
PDF
2017年5月26日 オープンソースデータベース比較セミナー「NoSQLとしても使えるMySQLとMySQL Cluster」
by
Ryusuke Kajiyama
PDF
[OSC 2020 Osaka] MySQL"超"入門
by
Ryusuke Kajiyama
PPTX
20140722 Taiwan MySQL User Group Meeting Tech Updates
by
Ryusuke Kajiyama
PDF
MySQL Cluster as Transactional NoSQL (KVS)
by
Ryusuke Kajiyama
PDF
[OSC 2020 Online/Nagoya] MySQLドキュメントストア
by
Ryusuke Kajiyama
PDF
[Java Küche RDB 最前線 2015] MySQL 5.7技術アップデート
by
Ryusuke Kajiyama
PPTX
[db tech showcase 2017 Tokyo] A23 - MySQLのセキュリティ関連機能の現状
by
Ryusuke Kajiyama
PDF
TWJUG August, MySQL JDBC Driver "Connector/J"
by
Ryusuke Kajiyama
PPT
第20回 中国地方DB勉強会 in 岡山 MySQLレプリケーション
by
Ryusuke Kajiyama
PPT
MySQL Performance Tuning at COSCUP 2014
by
Ryusuke Kajiyama
PPTX
[Preview] MySQL session at Open Source Conference 2014 .Enterprise Osaka
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
MySQLのNoSQL機能 - MySQL JSON & HTTP Plugin for MySQL
by
Ryusuke Kajiyama
20150131 ChugokuDB-Shimane-MySQL
by
Ryusuke Kajiyama
[OSC 2017 Tokyo/Fall] OSSコンソーシアム DB部会 MySQL 8.0
by
Ryusuke Kajiyama
[中国地方DB勉強会] 第22回 Webアプリ開発をデータベース側から変革していく - MySQL 8.0新機能
by
Ryusuke Kajiyama
TWJUG August, What's new in MySQL 5.7 RC
by
Ryusuke Kajiyama
MySQL 5.7 & 最新開発状況 @ オープンソースカンファレンス20
by
Ryusuke Kajiyama
第九回中国地方DB勉強会 in 米子 MySQL 5.7+
by
Ryusuke Kajiyama
2017年5月26日 オープンソースデータベース比較セミナー「NoSQLとしても使えるMySQLとMySQL Cluster」
by
Ryusuke Kajiyama
[OSC 2020 Osaka] MySQL"超"入門
by
Ryusuke Kajiyama
20140722 Taiwan MySQL User Group Meeting Tech Updates
by
Ryusuke Kajiyama
MySQL Cluster as Transactional NoSQL (KVS)
by
Ryusuke Kajiyama
[OSC 2020 Online/Nagoya] MySQLドキュメントストア
by
Ryusuke Kajiyama
[Java Küche RDB 最前線 2015] MySQL 5.7技術アップデート
by
Ryusuke Kajiyama
[db tech showcase 2017 Tokyo] A23 - MySQLのセキュリティ関連機能の現状
by
Ryusuke Kajiyama
TWJUG August, MySQL JDBC Driver "Connector/J"
by
Ryusuke Kajiyama
第20回 中国地方DB勉強会 in 岡山 MySQLレプリケーション
by
Ryusuke Kajiyama
MySQL Performance Tuning at COSCUP 2014
by
Ryusuke Kajiyama
[Preview] MySQL session at Open Source Conference 2014 .Enterprise Osaka
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
Recently uploaded
PDF
エンジニアが選ぶべきAIエディタ & Antigravity 活用例@ウェビナー「触ってみてどうだった?Google Antigravity 既存IDEと...
by
NorihiroSunada
PDF
流行りに乗っかるClaris FileMaker 〜AI関連機能の紹介〜 by 合同会社イボルブ
by
Evolve LLC.
PPTX
楽々ナレッジベース「楽ナレ」3種比較 - Dify / AWS S3 Vector / Google File Search Tool
by
Kiyohide Yamaguchi
PDF
20251210_MultiDevinForEnterprise on Devin 1st Anniv Meetup
by
Masaki Yamakawa
PDF
Machine Tests Benchmark Suite. Explain github.com/alexziskind1/machine_tests #2
by
Tasuku Takahashi
PDF
Machine Tests Benchmark Suite. Explain github.com/alexziskind1/machine_tests #1
by
Tasuku Takahashi
エンジニアが選ぶべきAIエディタ & Antigravity 活用例@ウェビナー「触ってみてどうだった?Google Antigravity 既存IDEと...
by
NorihiroSunada
流行りに乗っかるClaris FileMaker 〜AI関連機能の紹介〜 by 合同会社イボルブ
by
Evolve LLC.
楽々ナレッジベース「楽ナレ」3種比較 - Dify / AWS S3 Vector / Google File Search Tool
by
Kiyohide Yamaguchi
20251210_MultiDevinForEnterprise on Devin 1st Anniv Meetup
by
Masaki Yamakawa
Machine Tests Benchmark Suite. Explain github.com/alexziskind1/machine_tests #2
by
Tasuku Takahashi
Machine Tests Benchmark Suite. Explain github.com/alexziskind1/machine_tests #1
by
Tasuku Takahashi
[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