全体感想
疲れた・・・.今回は出席した全てのセッションとKeynoteのメモをリアルタイムでここにアップしたのでかなり消耗した.明日からまたゆったり行く予定.
去年も参加しているのでそれと重複する内容についてはまあ普通といった感じであったけれども,全体としては去年と比べてこんな印象.
- UC2004では参加者は500名くらい.Clusterの紹介,MySQL5.0の新機能紹介が目立っていた.
- 2004年から2005年にかけて,MySQLはver4.1のGA版をリリースし,ver5.0もβ版を既にリリースした.元々MySQLは欧米ではかなり使われていたけれども,エンタープライズ分野での利用がこの1年で欧米でもさらに広がった.
- その結果,UC2005では参加者は1300名に達した.Cluster関連のセッションは相変わらずいくつかあったけれども,レプリケーション機能の今後の進化と絡めて話されるセッションが多かった.MySQL本体についてはver5.1での新機能(レプリケーション関連,XA関連)の話が多かったような気がする.
自分が参加したセッションしかよく見ていないので他にもいろいろあるとは思います.
注:英語力があまり無いのでメモは必ずしも全て正しく書き取っているとは限りません.
P.S.
夕食後に会場だったWestinの一階のバーでMySQL ABの面々と話をしていると,チリのシステムインテグレータの人(MySQLパートナー)を紹介された.どうやらMySQL Clusterの導入に成功したらしい.日本でも早く導入してみたいものです.
今回のUCですが,MySQL Networkについてもかなり触れられていたことを付け加えておきます.(自分はこの辺のセッションにはあまり出ていなかったですが,Keynote等では毎回触れられていました.)
Writing Storage Engines for MySQL
by Brian Aker
MySQLのDirector of Architectureによるストレージエンジンの作り方解説:
- Starting points for coding:
-sql/ is for the kernel -mysys/ is the portable runtime -mysql-test is for you test cases
- Terms:Storage Engine, Handler (This is the code that controls the storage engine)
- What does it take?: All code is written in simplified C++, An example storage engine, your ideas
- People who implemented storage engine: Friendster, Google, Yahoo (contributed ideas, thanks Jeremy!!)
- server's kernel:
DDL > Query cache > rewrite engine > parser > optimizer > hander > strage engine DML > rewrite engine > parser > optimizer > hander > strage engine
- What is a storage engine?: Data formats on disk
- What do I need to do to add field:
- Subclass Field in field.h - implements a few method Storage:store(string), store(long long), store(double) Retrieve:val_real(), val_int(), val_str() Other:field_cast_type(), result_type(), cmp(), sort_string(), max_length()
- Field Store Example:
int Field_ipaddrv4::store(const char *from, uint length, CHARSET_INFO *cs) { int count; count = sscan(from,"%u.%u.%u.%u" ptr, (ptr+1),(ptr+2),(ptr+3)); if(count!=4) { bzero(ptr,4); return -1; } return 0; }
- Storage Engine Methods types:
Table Control: create(), open(), close(), delete_table() Optimizer: info(), records_in_range() SQL Modifiers: insert_row(), delete_row(), write_row(), update_row() SQL Readers: [Scan Reads] rnd_init(), md_init(), md_next(), position(), rnd_pos(), mod_pos() [Index Reads] index_read(), index_next()
- Transaction methods ←more complex!!
- Bulk load methods
- Defrag methods
- Lot more (read handler.h)
- Autoconf: Create a new rule in config/ac-macros(look at ha_example file), add your ruleto be checked in configure.in
- Additional Files: basic server files modified under sql/
sql/Makefile.am ..add your include and source file sql/handler.h ..register your handler sql/mysql_priv.h ..set up your variable for show variabes sql/handler.cc ..add yourself to the handler create list sql/mysqld.cc ..set up your variable for show sql/set_var.cc ..add your variable for SHOW display
- Test Cases
mysql-test/include/have_mmap.inc mysql-test/mmap.test mysql-test/???
- other thoughts: what is your goal? (read only? durable? network?)
- more information: sql/ha_example.[h|cc] , mysql.com , list , support
感想.昨日のアレよりもテクニカル,実践的.とりあえず"sql/ha_example"見れ.Brianさんお疲れ様です.今回のUCのセッションはこれにて終了.あとはTim O'Reilly氏のスピーチのみ.
MySQL Replication Features and Roadmap
by Brian Aker
MySQLのDirector of Architectureによるレプリケーション機能ロードマップ紹介:
- 現在のレプリケーションver4.1:Master(binlog)→Slave(relay-binlog), 非同期
- 次期レプリケーションver5.1:複数Master(binlog)→Slave(複数のrelay-binlog),いわゆるマルチマスター
- Star Cluster:スター型ネットワークのクラスタ
- Grid Cluster:複数対複数の双方向クラスタ(各ノードが他の全てのノードと繋がる)
- Row Based Replication:Give the user choice for replication(Mixed statement/row based, only row based), Enabled 3rd party products for heterogeneous replication and conflict resolutoin
- Geographical:グローバルレプリケーションのことかな?
- メンテナンス用の新機能:Slaveをコマンド一つで新しいMasterにできたりする
CHECK TABLE STOP ON REPLICATION FAILURE STOP SLAVED HOST CHANGE MASTER <>
- Multi Stream:通常のMasterあるいはClusterにからレプリケーションを行い,さらに遠隔地のMySQLへレプリケーションする.これは一体??
- 現在のバックアップ手法:mysqldump(provides online backup of innodb, logical backup),point time recovery
- 3つの問題を解消:
Customer wants an easy to use, storage engine independent tool ISV needs an API to code too (バックアップ用APIの追加) Customers want to do an online backup with their own tools
- mysqlbackup:online backup,universal backup (5.1 MyISAM and Innodb, 5.2 Cluster), Scriptable and GUI based, schema/table backup and restore, implement both redo and undo log backups
- libmysqlbackup:ISV向けAPI,MySQL開発陣も使う.logical and physical backup, Stream support
- Freeze IO:online IO suspend, use your own tools, say thanks to Novell!
感想.レプリケーションのノードレベルでのアーキテクチャがver5.1で大幅に進化する.レプリケーション管理ツールも作られるとかどこかで言っていたし,かなり期待できそう.
MySQL in an Enterprise Search Architecture
by Clay Webster, Associate VP of Platform Infrastructure, CNET Networks, Inc.
CNETのVPによるMySQLを用いた検索システムの事例紹介:
- きっかけ:2004年,それまで使っていた検索システムのベンダーがそのプロダクトのサポートを打ち切った.リプレースにかかる費用は莫大.そこでCNETはプロプラエタリ圏から脱することを決意.
- 必要だったこと:高性能なソートとテキスト検索,コンテンツのアップロードと配布を素早く行うこと,HTTPとXMLを用いたスタンダードなサービス,適切なキャパシティとスケーラビリティ,費用があまりかからない,素早く開発できること
- MySQLを選んだ理由:Fulltext検索とソートがGood.レプリケーションが簡単.Robust and Customer-Hardened(技術的な評価) / 費用があまりかからず,習得も簡単(経済的な評価).
- ATOMICSプロジェクト発足:Apache TO MySQL In CNET Search
- Apache2とMySQL4で構築.Apacheにはmod_atomicsとmod_mysql_poolモジュールを追加.Linux Redhat EL3.0 64bit Opteron.この環境でさらにMySQLのレプリケーションを使用.
- Apacheを選んだわけ:HTTPだから(もちろん),XML,ログ出力,ステータス? その他諸々.
- クエリ実行経路:AppServerのJavaアプリケーションからHTTP-GETでリクエストを受けてAtomic Query ServerがXMLでレスポンスを返す.あるいはsearch.comからHTTP-GETでリクエストを受けてXMLで返す.
- 初回DB移行:データインポート
- 増分についてのDB移行:JDBC
- 強み:検索速い.レプリケーション使っているので並行検索できる.ベンダーに高い金を払わずに済んだ.
- 強み:データベース(変更が即座に反映され,柔軟性が高く,クエリは透過的),アップグレード可能,クラッシュしない
- 重要ポイント:Extra Work and Thought, "Natural Language" vs BOOLEAN MODE
- 重要ポイント:Complexity,Space,and Speed.Retrieval Blind Spots(記号系文字が使えない?).
- 結論:
-Atomics is a workhorse and very capable -retrieval issues -meets >80% our search needs -scoring algorithms - and boolean mode vs normal mode -versy flexible
感想.レプリケーションを何台やっているだとか,システム全体のノード構成だとか,あるいは数値的データについては話がなかったのが残念.
Database Requirements in the Age of Scalable Services
by Adam Bosworth
- 最近Webで起きたこと:Simple, Sloppy, Standards, Scale
- Simple:PHP+JavaScriptによるアプリケーション開発
- Sloppy:add custom metadata or verbs
- Standards:どのプラットフォームでも動作するようになった,オープンソースがこれらを全て実装した.
- Scale:DNS(partitioning), Caching, Stateless, Coarse Grained interactions
- 高性能マシンがどんどん安価で提供され,ネットワークも高速となった.(ネットワークがディスクアクセスよりも速い).これがWEBへ大きく作用した.
- Google:100mもの検索リクエスト,ペタバイト級のデータからの検索,数百ミリ秒でのレスポンス,ハードウェア障害はいつもどこかしら発生するが"it takes a licking and keeps on ticking". Queries with low latency change the game.
- Googleのビジョン:データのWEB化,Doing for information what HTML over HTTP did for user interface.
- Google初期のビジョン:http://xml.coverpages.org/bosworthXML98.html 全てのデータがオープンスタンダードな方法で提供され,ユーザは情報を探したり,変更したりできる.→失敗?
- なぜ失敗したか:too late, didn't work like web , too hard for customers, web service
- MySQLについて:多くを求めないなら良いデータベース,しかし顧客は高機能化を求めている.WEBの教訓は,分散+オープンスタンダードが支持されるということ.
- オープンとは何?:オープンソースが支持されるのはTransparencyが高いから.サポートにお金を払うのであり,ソフトウェアライセンスではないから.No Lock inだから.
- 非オープンとは何?:標準化されていないもの.20世紀の遺物.いろんな顧客からのQueryを受け付けられないこと(相互運用性の話?)
- 必要なこと:一つのシンプルなOpen wire format, Sloppy Open model, P系プログラマおよびJSプログラマ
- 何が起きているか:RSS/AtomによるWEB PublishingのAggregation
- Basic Model:URLはクエリと同じ
- Normalクエリとの違い:リクエスト時間に制限があるので正確な結果は返さず
- Scalable Framework - Queries:Routerでロードバランスして各パーティションにふり,さらに各パーティションでMaster/Slaveレプリケーションで分散
- You can be Google too.
- Big centralized DB's will be so 20th century.
- We can change the world.
感想.標準化の結果オープンソースが入り込む隙間ができて,その後オープンソースが成長した,というのに納得.いろいろ聞いていて面白い内容.
Google Alert
"BIRT"で登録したら,Eclipse BIRT プロジェクトとは関係ないニュースが大量に送られてきた・・・.
Audrey Birtさんに関するニュース,John Birtさんに関するニュース,Lord Birtさんに関するニュース等々.
アラートから削除決定.