タグ

ブックマーク / nippondanji.blogspot.com (23)

  • 書籍発行のお知らせ:詳解MySQL 5.7 〜進化したMySQLをよく知るためのテクニカルガイド〜

    既に昨日のdb tech showcaseのスライドでご存じの方も多いだろうが、この度MySQL 5.7の新機能を解説するための書籍を発行させていただくこととなった。8月23日発売予定である。 MySQL 5.7の新機能については、これまでブログでは紹介してこなかった。というのも、あまりにもボリュームが多すぎて、ブログという媒体でカジュアルに紹介するには向いていないと思ったからだ。とはいえ、MySQL 5.7を皆さんに使っていただくには、誰かが新機能をしっかりと解説しなければならない。どうするべきか考えた結果、書籍としてまとめて出させていただくことになった。 新機能について真面目に解説しようとすると、新しいポイントがどこなのかということを言及するために、結局のところ元々の機能についてもある程度解説が必要になってしまう。そういうわけで、この書籍では、MySQLが持つ機能の基的なコンセプトや

    書籍発行のお知らせ:詳解MySQL 5.7 〜進化したMySQLをよく知るためのテクニカルガイド〜
  • MySQL 5.6リファレンスマニュアル日本語版のお知らせ

    MySQL 5.6 リファレンスマニュアル というわけで、日語版のマニュアルがリリースされた。これまでMySQL 5.6のリファレンスマニュアルは英語版しか無かったのだけど、公式に日語版がリリースされる運びとなったので、是非参照して頂きたい。 かつてMySQL 5.1の日語版マニュアルが存在したのだが、そちらは現在ウェブから参照できなくなっている。(PDF版はダウンロードできるという話も。)MySQL 5.1の日語版マニュアルは、ぶっちゃけ翻訳があまりイケてなかったので、今後はぜひMySQL 5.6の日語版を参照してもらいたい。ついでにもう古のバージョンは窓から投げ捨てて、この機会に是非新しいバージョンへ移行してみてはいかがだろうか。 何か問題が見つかった場合には、ぜひバグレポートをお願いします。バグレポートのカテゴリは「Japanese Documentation」を選択してく

    MySQL 5.6リファレンスマニュアル日本語版のお知らせ
  • 書籍出版のお知らせ:理論から学ぶデータベース実践入門 ~リレーショナルモデルによる効率的なSQL

    来る2月27日、データベースの新書籍を発売させて頂くことになった。タイトルは「理論から学ぶデータベース実践入門 ~リレーショナルモデルによる効率的なSQL」となっている。単に「データベース」と書いてあるが、RDBがメインのテーマの書籍である。 多くの人が未だにRDBを使いこなせていないのではないか。RDBの使い方をマスターするには何が必要なのか。それがここ数年私が追ってきたテーマであり、この書籍を出すことになった動機である。 あまりにも酷いDB設計、あまりにもスパゲティなクエリ、あまりにも希薄なデータモデルへの理解。そういった問題はどこから生み出されるのか。そのひとつの結論としてたどり着いたのが、「そもそもRDBの使い方があまり理解されていないのではないか」ということだった。名著、SQLアンチパターンでは「やってはいけないケース」について学ぶことができるが、その反対のテーマ、つまり来どの

    書籍出版のお知らせ:理論から学ぶデータベース実践入門 ~リレーショナルモデルによる効率的なSQL
    terazzo
    terazzo 2015/02/02
  • MySQLレプリケーションの運用が劇的変化!!GTIDについて仕組みから理解する

    メリークリスマス!!やあ、良い子のみんな!!サンタクロース・・・ではなく、ヒゲモジャギークからのクリスマスプレゼントだよ!! というわけで、MySQL Casual Advent Calendarの25日目である。今朝Advent Calendarを覗いてみると、日分のエントリーが無かったので、急遽書くことにした。Advent Calendar最後の日、クリスマスを飾る記事のテーマはGTIDだ。 前回の投稿では、MySQL 5.6の目玉機能として、レプリケーションがクラッシュセーフになったことを挙げた。レプリケーションまわりで言えば、もうひとつ外せない目玉機能がある。それがGTID(Global Transaction ID)である。 GTIDは良くも悪くもレプリケーションの運用を変化させる。GTIDを使うことによって得られる最大のメリットは、CHANGE MASTER TOでバイナリロ

    MySQLレプリケーションの運用が劇的変化!!GTIDについて仕組みから理解する
  • MEANスタックは破壊的か

    最近、MEANがイイという話をチラホラと耳にする。先日も次の記事がはてブで話題になっていた。 MEAN(MongoDB, Express, AngularJS, Node.js)スタックが優れている理由 - Mozilla Open Web Day in Tokyoを終えて - albatrosary's blog この記事の冒頭では、MEANはLAMPに変わる技術として紹介されているが、果たしてそれは正しいのだろうか。(この記事では、LAMPを例にとりつつJavaがどうのという記述があるので、恐らくはLAMPではなく既存のリレーショナルデータベースを用いたアーキテクチャ一般について述べたいのではないかと思う。)MEANについて少し思うところがあるので、今日はMEANの可能性について書き綴っておこうと思う。ただし、私自身MEANスタックと呼ばれるシロモノは使ったことがなく、構造を理解した上

    MEANスタックは破壊的か
    terazzo
    terazzo 2014/10/10
  • 自由でオープンなウェブ終了のお知らせか?またはそれを守るために我々は何をするべきか。

    先日、MozillaがブラウザにEMEを採用することを発表してしまった。Mozillaには正直言ってがっかりだ。以前、DRMがウェブに持ち込まれようとしている未だかつてない危機というエントリで危惧していたことが現実になってしまった。フリーソフトウェア財団も今回のMozillaの発表に対して非難の声明を出している。 EMEがブラウザに搭載されるのは、自由でオープンなウェブにとって危機的な状況であると言える。今日はそのことについて警笛を鳴らしたいと思う。 ウェブは自由でオープンだから発展したそもそも、ウェブがこれだけ発展したのは、その仕様が自由でオープンだったからだ。現実にはブラウザごとにクセが強すぎるので半ば笑い話にしかならないが、建前上は互換性はあることになっている。そのため、ウェブページはどのブラウザあるいはOSであっても閲覧することができる。中にはサポートしていないブラウザを拒否するよ

    自由でオープンなウェブ終了のお知らせか?またはそれを守るために我々は何をするべきか。
    terazzo
    terazzo 2014/05/16
  • WEB+DB Pressの連載終了とSoftware Design寄稿のお知らせ。

    これまで約2年間に渡りWEB+DB Pressにて連載をさせて頂いた。連載のタイトルは「理論で学ぶSQL再入門」というカタいものだったが、だからこそできるだけわかりやすく、そして楽しめる工夫をして来たつもりである。連載の内容が少しでも皆さんのRDBやデータモデルへの理解を深める助けになれば幸いである。 連載を終える理由はごくごくプライベートなものである。いや、プライベートな時間がとれなくなってしまうからというのが正しい。というのも、実は先月私の遺伝子との遺伝子を半分ずつ併せ持つ生命体(XX遺伝子)が爆誕したからだ。この生命体は極めて世話が焼けるものであるため、最低でも向こう1年ほどは時間的な余裕は失われるだろう。(ちなみに、同様の生命体は他にも既に居る。)余暇がまったくなくなるわけではないが、連載できるほどのまとまった時間を捻出することは叶わないと考え、継続の打診を頂いたので恐縮なのであ

    WEB+DB Pressの連載終了とSoftware Design寄稿のお知らせ。
    terazzo
    terazzo 2014/02/20
  • DB設計の難しさ

    今日は徒然なるままにDB設計について思っていることを並べてみようと思う。 ようやくWEB+DB Pressの次号の原稿を書き終えた。2年間の連載であるが、来年はプライベートが忙しくなる予定なので、連載はこれにて終了とさせてもらうつもりである。 「なぜ人はリレーショナルデータベースを使いこなせないのか」 このところ執筆や講演を通じてリレーショナルモデルについて説明する機会を色々頂いているが、それらの活動の根源となっているのが、この素朴な疑問である。その疑問をパワーにしてこれまで活動を行なってきた。 現時点での自分の回答は「データベース設計が難しいから」である。もちろんリレーショナルモデルそのものの難しさというのもあるが、それよりは「適切な使い分けができていない」ということが大きいように思う。言葉を変えると、リレーショナルモデルを適用すべきデータとそうでないデータの判断ができていないからDB

    DB設計の難しさ
    terazzo
    terazzo 2013/12/27
  • SQLインジェクション対策に正解はない

    最近、SQLインジェクションのネタが盛り上がってるようだ。下記のTogetterまとめあたりが震源地だろうか。 「プリペアードクエリが基だけど、動的に SQL を組み立てる場合もあるから、そういう場合に備えてエスケープも知っておいたほうがいいかも」 - Togetterまとめ まとめを読んだ感想としては、「どちらの意見も間違ってはいない」というものだ。前提あるいは見方が異なるために、見解の相違が生じているだけのように思う。SQLインジェクションについては私も若干思うところがあるので意見を書いておこうと思う。 攻撃を防ぐのは難しいSQLインジェクションをはじめとするセキュリティ対策が難しいのは、ひとつでも穴があると致命的なダメージを受け得るということだ。「どうやって効率よくコードを書くか」とか「コードのメンテナンス性を高めるにはどう書くべきか」みたいな議論とは全く質が異なる議論が必要になっ

    SQLインジェクション対策に正解はない
    terazzo
    terazzo 2013/12/15
    そうか、SQLインジェクションがない事を証明出来ればいいのか>テストせよ
  • リレーショナルモデルのドメイン設計についての議論

    リレーショナルモデルを実践するには、ドメイン(≒データ型)を如何に正しく設計するかということが極めて重要になる。しかしながら、ドメインをどう設計すべきかという議論はあまりされていないように思う。その結果、ドメインについての理解はあまり進まず、データベース設計に失敗しているパターンが多いように思われる。 というわけで今日のテーマはドメインである。 集合を定義するリレーショナルモデルにおけるデータ型とは何か。リレーショナルモデルを実践するにはまずその点から理解する必要がある。 リレーショナルモデルでは、データ型はドメインと呼ばれる。ドメインとは、その属性(≒カラム)に入るべき値はどういったものかを集合として定義したものだ。言い換えると、属性値とはある集合の要素の一つであると言える。従って、ドメインを設計する際には、SQLで言うところのデータ型、つまりINTやCHARといったものだけでなく、その

    リレーショナルモデルのドメイン設計についての議論
    terazzo
    terazzo 2013/12/08
  • DBエンジニアのための技術勉強会で発表したスライドを公開しました。

    DBエンジニアのための技術勉強会というイベントで、リレーショナルモデルにおけるDB設計について話す機会を頂いた。リレーショナルモデルは非常に重要であるにも関わらず、現場ではないがしろにされてしまっている。その結果、アプリケーションのロジックを上手くクエリで表現できず、開発現場では非効率な開発が行われ、多くの人がデスマ的な状況に追い込まれている。そういう危機意識について、これまで何度かブログでも書いてきたし、WEB+DB Pressで連載している動機もその点にある。リレーショナルデータベースはやはりリレーショナルデータベースとして使うべきだ。そのための鍵となるのが、DB設計である。 今回はなんと約2時間の持ち時間を頂いた。リレーショナルモデルについてはこれまで何度か話す機会を頂いたが、2時間というのは最長記録である。それに合わせてスライドもボリュームたっぷりのものになった。過去のスライドと

    DBエンジニアのための技術勉強会で発表したスライドを公開しました。
    terazzo
    terazzo 2013/11/29
  • データベースアプリケーション開発を炎上させる負のスパイラル

    毎度おなじみ、はてブのホットエントリに「SIをダメにする負のスパイラル」というタイトルのまとめが掲載された。きしだ氏とはかなり視点は違うものの、開発現場の問題点については少し思うところがあるので意見を書いてみようと思う。と言っても、以下の話の内容はデータベースアプリケーションに限定した話であり、またSIerだけに限った話ではないのでその点はご容赦頂きたい。もちろんSIer各位の案件はデータベースは必須なので、エントリで触れる問題点には該当するだろう。 Q.なぜ炎上するのか? A.正しいデータベース設計ができていないから結論から言おう。データベースアプリケーションの開発が炎上するのは正しいデータベース設計ができていないからだ。ここでいう「正しい」とは、論理的に証明できる正しさという意味ではない。「来こうするべき」といった意味で捉えて欲しい。 「炎上」というのは、例えばテストが通らない、バ

    データベースアプリケーション開発を炎上させる負のスパイラル
    terazzo
    terazzo 2013/11/17
  • MySQLのmanページのライセンスについて

    MySQLのmanページのライセンスがGPLからプロプライエタリライセンスに変更されたというようなことが騒ぎになっている。既にご存知の方はいらっしゃるだろうが、これはバグであり意図して行ったものではない。何故このようなバグが起きたかということも含め、今日はmanページにまつわる話をしたい。 バグが起きた仕組み結構な人が「バグでそんなことが起きるの?」と考えたようだ。「manページのマニュアルを差し替えるなんて人為的にやらなきゃ起こり得ない」という思考だろう。そう考える前にひとつ事実を知ってほしい。そもそもMySQLのソースコードとmanページはもともと別個に管理されているということを。 どれでもいいので以下のページに記載されてあるリポジトリをコピーしてみてほしい。 MySQL Server in Launchpad 5.6なら例えば次のコマンドを実行すれば良い。 shelL> bzr br

    MySQLのmanページのライセンスについて
  • RDBMSに関する典型的な誤解が絶えないという現実

    新入社員必読、データベースの基を理解しよう - データベースはなぜ必要なの?:ITproという記事に対するブクマで次のようなIDコールが来た。(現在はコメント返しへのお礼が入っているので、文字数制限のためオリジナルのコメントは少し切り詰められている。) "リレーショナルデータベースはすべてのデータを2次元の表形式で表現"こういうのもリレーションが2次元構造という誤解の一種なんだろうか。id:nippondanjiさんが書いてたような。 さて、この疑問に対する正解は如何なるものだろうか? つい先日「7つのデータベース 7つの世界」の書評で書いたばかりだが・・・ 言うまでもなくその通りである。 リレーションが2次元的な構造を持っているというのは典型的な誤解だ。(ちなみにリレーションの次元は属性の数に等しい。n個の属性があるリレーションはn次元。)リレーショナルモデルについてちゃんと学習してい

    RDBMSに関する典型的な誤解が絶えないという現実
    terazzo
    terazzo 2013/04/22
    PostgreSQLは存在しないテーブル名を指定すると「ERROR: relation "hoge" does not exist」とか言ってくるので可愛い。
  • 書評:「7つのデータベース 7つの世界」

    訳者、角 征典氏より献御礼。「7つのデータベース 7つの世界」はそのタイトルの通り、7種類のデータベースソフトウェアについて解説したNoSQLの道標とも言うべき書籍である。7種類のデータベースとして紹介されているのは、PostgreSQL、Riak、HBase、MongoDB、CouchDBNeo4j、Redisである。書は非常にそそるタイトルであり、わくわくしながらページをめくった。だが、第2章「PostgreSQL」で期待感は打ち砕かれることになる。 正直なところ、この書籍について書評を書くのはどうしようか迷ってしまった。なぜならば、第2章の説明がかなり間違っているからである。そのため、書評を書こうとするとどうしても辛口にならざるを得なかった。献して頂いた角氏にその旨を伝えたところ、それでも良いと快く了承して頂いた。当に辛口になるのでその点は容赦して頂きたい。 何が問題なのか

    書評:「7つのデータベース 7つの世界」
    terazzo
    terazzo 2013/04/03
  • 開発スピードアクセル全開ぶっちぎり!日本よ、これがMySQL 5.6だッ!!

    米国で行われているMySQL Connectというイベントで、ついにMySQL 5.6 RC(リリース候補版)が発表された。リリース候補版ということは、これが次の正式版になるということだ。MySQL 5.5は5.1から凄まじい進化を遂げたバージョンであった。だが、MySQL 5.6はさらにそれを上回る進化を遂げている!正直ここまでの進化を誰が予想しただろうか、いや誰も出来なかったであろう。これまで、α版が出たときから何度か新機能について紹介してきたが、今回改めてMySQL 5.6の新機能を振り返ってみようと思う。すべてまとめるともの凄い内容だ。興奮して夜も眠れなくなること請け合いだ。MySQLの進化が止まるのでは?などという心配は吹き飛び、もはやもうちょっと小出しにしなくて良かったのか?と心配してしまうレベルである。 それではMySQL 5.6の新機能について紹介していこう。 InnoDB

    開発スピードアクセル全開ぶっちぎり!日本よ、これがMySQL 5.6だッ!!
  • 真のオープンソースとは何か?

    @tmaesaka氏からのツイートで知ったのだが、LPI-Japanが見過ごすことが出来ない発言をしている。 PostgreSQL技術者を認定、LPI-Japanが「OSS-DB技術者認定試験」開始 - ITpro 以下、引用。 OSS-DBには、PostgreSQLと米OracleMySQLがあるが、「特定ベンダーの管理下にあるソフトは真のOSSとは言えない」(LPI-Japanの成井弦理事長、写真)として、今回スタートするOSS-DB ExamではPostgreSQLのみを対象とした。 これはおかしなことだ。一体誰が「特定ベンダーの管理下にあるソフトはOSSではない」などと決めたのだろう? MySQLはオープンソースソフトウェアです。MySQLはれっきとしたオープンソースソフトウェアだ。ただし、Community Editionに限る。MySQLはデュアルライセンスであり、GPL版と

    真のオープンソースとは何か?
    terazzo
    terazzo 2011/06/12
  • 受託開発とGPL

    GPLに対する代表的な誤解・・・というかむしろ謎のひとつに、受託開発(SI)におけるライセンスの扱いがある。この点が明確になっていないため、受託開発において無意味にGPLを回避しようとしたり、GPLに対するFUDを流布することに対する原因になっていたりするように思う。フリーソフトウェアおよびオープンソースソフトウェアを愛する者として、そのような状況は断じて見過ごすことができない!!というわけで、今日はGPLを受託開発(SI)において用いる場合の注意事項を説明しよう。 GPLの使いどころ受託開発においてGPL(とその仲間たち=LGPL、AGPL)が登場するのは、第三者、つまり発注側でも受託側でもない者が作成したGPLのソフトウェアを利用する場合である。例えばGPLが適用されたライブラリなどだ。周知の通り、GPLのソフトウェアをリンクしたソフトウェアを再配布する場合は、そのソフトウェア全体に対

    受託開発とGPL
    terazzo
    terazzo 2010/06/03
  • Not Only NoSQL!! 驚異的なまでにWRITE性能をスケールさせるSPIDERストレージエンジン

    Webサービスでは、世界中からのトラフィックを捌く必要があるため、いくらチューニングしようとも一台のRDBMSでは捌ききることが出来ないのが常だ。MySQLは最初からマスター・スレーブ型のレプリケーション機能が搭載されており、スレーブをたくさんぶら下げることによって参照の負荷をスレーブに割り振るというスケールアウトによってその問題に対処してきた。スレーブによるスケールアウトは、参照(=PV)が多いWebサイトと非常に相性が良く、幾多のWebサイトにおいて実績を作ってきているし、まだまだ利用されている。 しかしながら、サイトのトラフィックが劇的に増加してくるようになると、レプリケーションによる負荷分散では追いつかなくなってきた。そこで人々がとった選択肢は、memcachedを利用することである。memcachedはインメモリ型の高速なKVSであり、参照・更新性能はMySQLより格段に高い。M

    Not Only NoSQL!! 驚異的なまでにWRITE性能をスケールさせるSPIDERストレージエンジン
  • MySQL Clusterが苦手とするJOINを如何にして克服するべきか。

    シェアードナッシング型の負荷分散機能を持ち、なおかつ同期レプリケーションによるHA機能まで備えたMySQL Cluster最大の弱点といえば、JOINの遅さであろう。MySQL ClusterのJOINは偽りなく遅い。JOINを多用するアプリケーションでMySQL Clusterを利用するのはある意味マゾヒスティックな行為であると言えよう。何故MySQL ClusterはJOINが遅いのか?それはMySQL Clusterが分散データベースだからである。 ご存じの通り、MySQLにおけるJOINのアルゴリズムにはNested Loopしかない。他のストレージエンジンを利用していればそれでも十分実用に耐えうるぐらい高速なのだが、MySQL Clusterの場合はそうはいかない。JOINでは自ずとストレージエンジンからデータをフェッチする回数が増えるが、MySQL Clusterの場合レコード

    MySQL Clusterが苦手とするJOINを如何にして克服するべきか。
    terazzo
    terazzo 2009/11/04