yamicha.com's Blog - Presented by yamicha.com
Blog yamicha.com's Blog - 2018/09 の記事
[1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] [27] [28] [29] [30]

yamicha.com's Blog
 諸事情により、現在更新休止中。ご了承ください。もし今後ブログを再開することがあるとすれば、その際にはこのブログスクリプトではなく、新しく開発したものによるかもしれません。
 当ブログ管理者についてはこちらをご参照。
開発魔法(737)
社会問題(733)
お知らせ(11)
質問・バトン回答(15)
ゲスト出演(8)
経済・知的財産(150)
ゲーム開発(182)
[Ada] 勝手に補足
- Note
- 金配りの次の一手


- Endless Ultimate Diary
- 銃世界

漢字バトン
- うるる雑記帳
- 漢字接力棒

ツキアイゲノムバトン
- ブログ@うにうに画像倉庫
- あぶ内閣

縺イ縺セ縺、縺カ縺励ヰ繝医Φ
- 月夜のボヤキ
- 騎士サーラバトン
パスワードを使う
名無し (2012/02/27)


開発者解放裁判
yamicha.com (2010/03/14)
Winnyに関しては、私も「純白」とまでは考えておりませんし、使用し..

開発者解放裁判
通りすがり (2010/03/08)
winnyに関しては「ダウンロードソフト板」なんてところを拠点に開発..

新型インフルエンザの恐怖
いげ太 (2009/11/03)
> C#などの「int Some(int , int)」は、F#では「(int * int) ->..

時効に関する思考
yamicha.com (2009/08/31)
>いげ太さんコメントありがとうございます。手元にドキュメントが少..
Homepage
Blog Top
Normal View
List View
Search
Calendar
Comment List
Trackback List
Blog RSS
Send Trackback
Phone Mode
Administrator
yamicha.com
Blog
るううるる。
Source
法令データ提供システム
FindLaw
Development
Java2 Platform SE 6
Java EE 6 API
MySQL Developer Zone
PHP Reference
MSDN Library
Ada Reference Manual
Objective Caml
Python Documentation
Erlang
Prolog Documents
「解任」発表
2006/02/08(Wed)17:29:15
 世にSQLは色々ありますが、それではMySQLの長所といったら。クエリキャッシュやら動作速度やら色々ですが、大きいのは何といってもストレージ エンジンを選択できる点でしょう。「動作が速いのはMySQLではなくMyISAMテーブル」などとも言われていますが、つまり機能はどうでもいいから速度重視ならMyISAMを使えるわけです。
 しかし、このストレージ エンジン、5.0で大量に新しいものが導入されているようです。Windowsの場合は初期のMySQLでは一部のエンジンしか使えませんから、多くのエンジンを搭載してコンパイルされたmysqld-max-ntをサービスに登録しなければなりません。
mysqld-max-nt --install MySQL-MAX --defaults-file="C:\MySQL\my.ini"
 後は「サービス」を開き、「MySQL-MAX」を開始するだけです。これでかなり多くのエンジンを使うことができます。
 まずは4.0以前のデフォルトエンジン、MyISAMより。
CREATE TABLE dsp_game(name VARCHAR(32) , genre VARCHAR(32) , 
PRIMARY KEY(name)) ENGINE = MyISAM;

CREATE TABLE dsp_other(name VARCHAR(32) , genre VARCHAR(32) , 
PRIMARY KEY(name)) ENGINE = MyISAM;

BEGIN;

INSERT INTO dsp_game VALUES('Tactical Revolution' , 'Simulation') , 
('Slide Puzzle' , 'Puzzle') , ('Typing Wind' , 'Typing');

INSERT INTO dsp_other VALUES('Servlet Chat' , 'Chat') , 
('yamicha.com Blog' , 'Weblog') , ('com.yamicha.romanx' , 'Typing API');

ROLLBACK;
 最後にロールバックを入れましたが、MyISAMはトランザクションセーフではありません。つまり、データはしっかり登録されています。機能はさほど多くありませんが、非常に高速に動作するそうです。トランザクションを使う必要がなかったり、単にデータを読むだけのテーブルであれば、MyISAMが適切でしょう。
 通常のテーブルにはInnoDBを用い、レプリケーション(データベース版のRAIDと考えれば分かりやすいでしょうか)サーバーのテーブルにはMyISAMを使う、といった使い方もあるようです。そうすれば、確かに主サーバーでは高機能のDBを使え、副サーバーでは素早い保存に徹することができます。私の環境ではレプリケーションなど不必要ですから、関係ないといえば関係ないのですが。
 その次、MRG_MYISAMテーブルなど。これはMyISAMテーブルをひとまとめにするものですが、「カラム構造が同じである」「Primary KeyやUniqueは不用意に使えない」(2つ以上のテーブルを結合する以上、一意性が確保できないため)「MyISAMのみに適用」など色々制限はありますが、場合によっては結構便利なのでは。
CREATE TABLE dsoulproject(name VARCHAR(32) , 
genre VARCHAR(32) , INDEX(name)) ENGINE=MERGE 
UNION=(dsp_other , dsp_game) INSERT_METHOD=FIRST;
 一応これで作れましたが、なぜかgenreがNULLになってしまいます。ちなみに、このテーブルにINSERTを行うと、UNION内で最初に指定したテーブルにデータが追加されます。INSERT_METHODをLASTにすれば最後のテーブルに追加されますし、NOまたは未指定ならデータを追加することができなくなります。
 なお、MyISAM以外のテーブルでこれを使いたい場合などは、MySQL 5.0からはビューが使えてしまうわけですから、遠慮なくビューで作ってしまいましょう。
 その次、BDBテーブルについて。これはトランザクションセーフテーブルで、高機能テーブルなのですが、使われているという話をイマイチ見聞きしたことがありません。InnoDBとの大きな違いは、何といってもページレベルロックである点でしょう。何にしてもトランザクションが使えるのはありがたいのでは。
 ちなみに、この辺の知識は少しばかりはっきりしないのですが、補足までに。ページレベルだとテーブルごとロックで固めてしまうため、多くのレコードを一気に読み取るなりするのには強いそうですが、複雑な処理は行レベルの方が向いているとか。複雑な処理を行う場合、その前にトランザクションや手動テーブルロックを使っておけばパフォーマンスを向上させることができるようです。
CREATE TABLE bdb(name VARCHAR(32) , icon VARCHAR(32)) ENGINE=BDB;
INSERT INTO bdb VALUES('Ilias' , 'ilias.gif');
INSERT INTO bdb VALUES('Sara' , 'sara.gif');
BEGIN;
INSERT INTO bdb VALUES('Harden' , 'harden.gif');
ROLLBACK;
 トランザクションセーフですからロールバックは有効です。言うまでもありませんが、InnoDBと同じトランザクション内に属することもできます。InnoDBに隠れてしまってパッとしませんが、そのうち有力なメインストレージエンジンとして使うことになるかもしれません。
 他にはFEDERATEDなるエンジンもあります。これはテーブルの中でも非常に特殊で、他のサーバーからデータを持ってくる特性を持っています。
// 普通のInnoDBテーブル
CREATE TABLE levelup(name VARCHAR(32) , la FLOAT);
INSERT INTO levelup VALUES('Ilias' , 15.7);

// FEDERATEDテーブル
CREATE TABLE connect(name VARCHAR(32) , la FLOAT) ENGINE=FEDERATED 
CONNECTION='mysql://yamicha:password@localhost:3306/yamicha/levelup';
 が、ダメです。全く動きません。ちなみにこのテーブル、トランザクションセーフではないそうです。
 その他、EXAMPLEテーブルなるものもあります。
CREATE TABLE exa(name VARCHAR(32)) ENGINE=EXAMPLE;
Query OK, 0 rows affected (0.09 sec)

INSERT INTO exa VALUES('騎士サラサーラ');
ERROR 1031 (HY000): Table storage engine for 'exa' doesn't have this option

SELECT * FROM exa;
Empty set (0.00 sec)
 どうやらテーブル作成をテストするテーブルのようです。確かに開発時に使えないことはありません。使う必要があるかは別として。しかもインデックスをサポートしていません。何に使えというのでしょう。
 そして以前から使ってみたかったBlackholeストレージ エンジン。何やらスケールの大きい、無限的な名前ではありませんか。
CREATE TABLE blackhole(name VARCHAR(32) , 
description VARCHAR(2048)) ENGINE=BLACKHOLE;

INSERT INTO blackhole VALUES('魔道士イリアス' , '革命的な特色を持つ極めて
強力な魔道士。絶世の美貌と抜群のスタイルを持つ。というよりやせすぎ不健康。流し目
や魅了など、戦闘にはおよそ似合わぬ技で戦場を混乱に陥れる。一見すると無茶な計略も
練るが、仲間と認めた人間に寄せる信頼は厚く、名指揮官とうたわれている。');
Query OK, 1 row affected (0.00 sec)

INSERT INTO blackhole VALUES('騎士サーラ' , '性格は極めて温厚、信じる者の
ためには命をも投げ出し、それでいて終わりのない求道者という騎士の見本のような人間
。ただ、主君の命を遂行する際には、最低限の冷酷さをも併せ持つ。極めて力が強い以外
にも、実は料理が上手、手先が器用、物理学に長けている、といった隠れた一面も。');
Query OK, 1 row affected (0.00 sec)

INSERT INTO blackhole VALUES('剣聖ハードゥン' , '剣の達人で熟練騎士。若手
騎士をものともしない剣術使い。いわゆる隻眼の剣豪である。昔は相当厳しい性格であっ
たようだが、母国を追放され魔道士イリアスらと行動を共にするうちにごく温厚に。騎士
仲間である騎士サーラには、特に強い信頼を置いている。');
Query OK, 1 row affected (0.01 sec)
 これでようやくデータを登録できました。紹介文を書くのもなかなか疲れるものです。さて、とにかくこうしてデータベースに登録しておけば、後で簡単に参照することができます。
SELECT * FROM blackhole;
Empty set (0.01 sec)
 何ですと。つまり、私が登録したデータがないとおっしゃる。せっかく長文を書いたのに、どういうわけでしょう。全く人をバカにした話もあるものです。ではなく、BLACKHOLEエンジンはそういうエンジンなのです。
 使い方としては、データはバイナリログに記録されるそうですから、レプリケーション先にデータを渡したい時に便利なのだそうです。その他、実際にデータを登録しないため、オーバーヘッドが最小限になり、テストにも便利とか。使い方はユーザー次第というわけですか。なかなかユニークなテーブルではありませんか。
 次はARCHIVEエンジン。圧縮テーブルのようですが、何に使うのでしょう。何でも、圧縮テーブルにはSELECTとINSERTしかできなくなるそうです。といっても、別に最初から圧縮テーブルとして作る必要があったり、また圧縮したからおしまい、ということはなく、ALTER TABLEでいつでも圧縮したり他の形式に戻したりできます。
CREATE TABLE archive(name VARCHAR(32));
INSERT INTO archive VALUES('Sara') , ('Harden') , ('Shein');
ALTER TABLE archive ENGINE=ARCHIVE;

DELETE FROM archive WHERE name = 'Sara';
ERROR 1031 (HY000): Table storage engine for 'archive' doesn't have this option
 その他に私の環境で使えるのはInnoDBとHEAPテーブルですが、そもそもInnoDBはデフォルトですし、HEAPは単に「データをメモリ上に保持」(テンポラリテーブルに最適)するテーブルというだけです。
 これだけ多くの特色あるエンジンを使えるというのはMySQLの大きなアドバンテージでしょう。他のSQLでは、例えば高性能SQLを使う場合、時として大ナタや大剣で果物の皮をむくようなことになりかねませんし、軽量SQLではペーパーナイフで巨木を切り倒すことになる可能性もあります。それを、MySQLでは果物ナイフから大剣まで選べるのですから。

 本日はまたもや新聞に失望させられました。他にもいくらでも重大ニュースがあるはずなのに、「何とか妃何とかがカイニン」(解任でないのが残念)とかで一面記事をツブしてしまっているのです。新聞社サイトでも似たような現象。たかだか1人の妊娠を報じる前に、紅海で100人以上死んだのが分かっているのですか、あなた方は
 「日本中が喜ぶ」などと言われていますが、少なくとも私が喜ばないのは言うまでもありません。しかし、あらかじめ「妊娠」の事実をつかんでおいて、例えばヒューザーの社長を証人喚問に呼んだり、米BSE牛が見つかったりする時に重ねて「懐妊発表」とかをすれば、結構簡単に問題をもみ消せそうです。「ヒューザーにライブドアを重ねた」なる噂も立っていますが、仮にそうなら自民党はわざわざ問題を重ねて墓穴堀江したことになります。しかし、懐妊発表ならそのリスクもありません。こんなの一面記事にする新聞社の良識を疑います。
 例えば最近のニュースでいえば、伊藤氏がヒューザーの弁護をしており、さらに3男の会社がヒューザーから仕事を受注されたことが分かっていますが、これを安倍氏にまで波及させず、ここで幕引きにするために妊娠をぶつけてきた可能性もゼロではありません。新聞などで報じられていないだけで、その他の一大スキャンダルもどこかに隠れているかもしれません。マヌケに喜ぶのは裏を読めぬ人間ばかりなり。
 そして、さらに失望させられるのが政府の対応です。私は再三寛仁とかいう皇族が口出しをしているが、それに影響されることだけは絶対にしてはならないと言い続けてきましたが、政府の一部は実際に「寛仁氏の発言が影響を与えている」と明言しています。つまり、政治と皇族の分離など、有名無実化しつつあるわけです。
 それが今度は男子が生まれるかもしれないから議論に影響を与えるとは。いい加減あきれています。男子が生まれようが生まれまいが改正すべきを改正するのは当然というものであって、その程度で改正すべきものがそうでなくなるのなら、最初から改正など言い出す必要もないほど無意味な問題であったということです。
 改正すべきものだからと今国会提出が検討されているのであれば、皇族の妊娠や思い上がった奴の発言など無視して提出すべきですし、改正すべきでないものなら、同じく皇族の妊娠や思い上がり野郎の言葉に耳を貸さずに改正しなければ良いだけの話を、どうしてここまでややこしくするのか、私には理解できません。それこそ「証券取引法を強化しようと考えたが、皇族が妊娠したからやめておこう」と称するのと同じほど突拍子もない話です。
 無論、私は改正論者です。寛仁発言がなければ1、2期分の提出延長程度は構わなかったのですが、寛仁発言で反対派議員が勢いづいている(すなわち皇族に政治が動かされ始めている)今となっては、一刻の猶予もなりません。「皇族が妊娠した。証券取引法の強化をやめよう」とはならないのと同じく、「皇族が妊娠した。典範の改正をやめよう」とはなりません。
 皇室制度改正とはいえ立派な法改正であり、立法府の責任において行うことです。つまり、妊娠であれ口出しであれ、皇族のいかなる事情によっても、それで法改正の有無が決められるようでは困ります。一部には「皇室のことは皇室で決めるべき」なる声もありますが、それなら皇室を日本から切り離して法人か何かにして、独立採算で運営していただければ結構です。それなら勝手に決めていただいても何ら不具合はありません。そうでない以上、皇族の事情で法の行方が左右されるようでは困るのです。
 それにしても(でしゃばり皇族を除く)皇族というのも気苦労なもので。「第3子を妊娠した。改正に影響を与える」とか周りで大騒ぎ。別に皇族が妊娠すること自体には全く喜ぶ必要もありませんし、浪費される金額を考えるとげんなりしますが、ただ単に「1人の人間の妊娠」という意味では(皇族に限らず)喜ばしいことです。しかし、所詮は反対派議員にしてみれば、その妊娠も「政争の具」でしかないのでしょう。
 ところで小泉さん、掛け声はもうよろしいですから、さっさと今国会に出してはいかがですか、皇室改正案。
カテゴリ [開発魔法][社会問題] [トラックバック 0][コメント 0]
<- 前の記事を参照 次の記事を参照 ->

- Blog by yamicha.com -