MySQLのパーティショニングのサイズはいくつが良いのだろう?

MySQLのパーティショニングのサイズっていくらが良いのだろう。

暫く前に「KEYで1000でパーティション数を切った!」という話を聞いたんだけども、そもそも1000でパーティションを切れることに驚いたり。その時にはKEYパーティションとかHASHパーティションの仕組みをよく理解してなかったのだけれども。

さて、いざ自分がパーティションを使おうとして数分くらいググってもその最適な数が出て来なかったけども、RANGE/LISTとHASH/KEYで最適なパーティション数って違うのではなかろうか。

直感的には、

  • RANGE/LIST: 扱うデータに応じて適当に切ればいい
  • HASH/KEY: (うまいこと並列処理できるように)CPUの数に応じて適当に設定する

という感じがする。が、そのあたりもマニュアルに書いてないように思える。

更にはまだLISTを使うべきかHASHを使うべきなのかも悩んでる。

ZF2のフォームはマニュアル通り使うと大変めんどくさい

普段はZend Frameworkを好んで使っているのですが、Zend Framework 2(以下、ZF2)が出てきて “少なくともZend Framework 1のサポートは2014年の前半まではサポートするよ!“という事になっていて、2014年の前半って来年のことだよね… ということでZF2を触ってみています。

ZF2のリリースの際に “If you’ve worked significantly with ZF1, ZF2 will look alien to you. (意訳: バッチリZF1使ってるとZF2は全くの別モンに見えると思う)” と書いてある通り、全くの別モンです。

ZF2を触って見る限り、確かに別モノすぎる上に、マニュアル通りに使うと大変にコード数が多く、PHP特有のarray(array(array())) みたいなものが蔓延っており残念な感じがします。早くPHP 5.4に移行して[]が使えるようになりたいです。

そこで今日は簡単にフォームを使う方法を書き残しておきたいと思います。

まずはZF2のマニュアルのQuick Startのフォームの作り方を見てください。

(あまりに長いコードなので省略しました。)

どこがQuick Startなのかわかりません。おそらくドキュメントの書き方が悪いのだと思うのですが、このドキュメントを読んだ瞬間、ブラウザのタブを閉じました。

実際のところ、何かの冗談だと思っていたのですが、色々考えた結果、「多分、普通のエンジニアは次のようにフォームを作るんだろうなぁ」と思い、コードでフォームを作るのをやめて、設定ファイルに書き出すことにしました。

こういう感じです。

1番目はInputFilterの設定ファイル(ini)、2番めはフォーム部品の設定ファイル(ini)、3番めはController用のファイル(php)、4番目がView用のファイルです(phtml)。

うまいこと行くと、次のように表示されます。

ZF2のSkelton Code(開発時にベースにするまっ更なアプリ)でTwitter Bootstrapを使っていたため、Bootstrap風にフォームを出力するために “ZfcTwitterBootstrap” という外部モジュールを使っています。

ZfcTwitterBootstrap のお陰で、View で

$this->form->prepare();
ECHO $this->ztbform($this->form);

この2行でフォームが出力できるようになっています。

ZF1とZF2での基本的な違いですが、

  1. ZF2では Validator というものではなく、 InputFilter というものを利用し、データの検証を行う
  2. ZF2では Form オブジェクトをECHOするだけではフォームをHTMLで出力できない

というところです。特に後者については自分もよくわかっていないのですが、フォームの出力には ViewHelper の利用が必須になっています。

取り敢えずのところは、フォーム地獄からはこのような感じで逃げています。

1億件前後のデータにインデックス貼ったら死ぬ

表題の件の通り、1億件前後のデータにインデックスを貼ろうかなと思ったのですが、そもそも1億件のデータにインデックスを貼りたくないし、そもそもその必要すらないというのが今日のお話です。

要約すると、”不要なデータをインデックスさせたくなければサマリーテーブルを更新していけば良いよね”ということです。

此処から先の記事は読む価値はありません。

Continue reading »

Java/PHPでアプリレベルのRSAとAESを使った暗号化(その1)

Webアプリケーションで通信経路を暗号化する場合には通常はSSLを使います。というか、そもそもそれ以外の方法を使う利点がほとんどありません。

が、それでもSSL以外の方法を利用して暗号化された通信を行いたい事例はあると思います。

そこでアプリレベルでSSLでも使われているRSAと、秘密鍵暗号方式の一つであるAESを利用した暗号化について考えてみます。

Continue reading »

Apacheで使うモジュール、使わないモジュール

Apacheをインストールした時に標準でついてくるモジュールのうち、よく使うモジュールと使わないモジュールを分類しました。

自分はメンテナンスがめんどくさいのでApacheはレポジトリの標準のものを利用しています。バージョンは2.2です。

Continue reading »

よくわからないけどTitanium StudioでAndroid SDKを認識しなくなった

多分、Titanium Studioをアップデートした後だったかにTitanium StudioがAndroid SDKを認識しなくなり、ハマりました。

ぐぐってみても”android-7″のディレクトリがあれば大丈夫だよ!という記事が出てきたのですが、実際、Android 7のSDKはインストール済みだったもののAndroid SDKは認識されませんでした。

アップデートがまずかったのかと思い、インストールメディア(dmgイメージ)から再インストールして見ましたが、これもダメ。

結局、原因はTitanium SDKが正しく認識されていないことが原因だったようです。

Continue reading »

第2回 Tuningathonへ行って来ました。

1ヶ月に1回しかブログ書いてないカニです。先週の土曜日、第2回 Tuningathonが開催され行ってきました。結果、上位3位だったようですが未だに何が決定打になっているのかわからず悩んでいます。

アプリケーションはMediaWikiにWikipediaのコンテンツを導入してあるといういわばWikipediaのミラー的なものです。データ件数は数百万件オーダー。一方で、テストに使用されるURLは同時並列4アクセスで合計100回のアクセスです。URLは各単語に対する記事でランダムに抽出されます。コンテンツの更新はありません。

Continue reading »

ソニーの個人情報流出事件。

そういえばしばらく前に、ソニーが個人情報を1億件、流出させたという話がありました。

その件で、どこかにOpenSSH関連のバグを突かれたんじゃないかという話があったのですが、そもそもOpenSSHの脆弱性だけでサーバーにアクセスできるようになるものではないため腑に落ちないでいました。

例えばファイアーウォールが正しく構成されていれば外界からOpenSSHには到達できないし、その侵入経路はいろんな要素(監視端末へのウイルス混入とか、ソーシャルハッキング、物理的な侵入とか…)が絡んでくる様に思えます。

で、こんな記事を見つけました。

Continue reading »