ErlangでAESとかの暗号化を行いたいときに使う「crypto」ですが、OpenSSLのライブラリ(シェアードオブジェクトやDLL)をPort経由で使ってるんですね。
Simple dungeonで、Mnesiaに保存する際にパスワードや連絡先メールアドレスなどを暗号化しようとしているのですが、この構成だと、多数のErlangプロセスが好き放題呼ぶと、ここが隘路になるので、使いどころに注意が必要な感じです。
まあ、ちょっとやそっとじゃここがボトルネックになるほどの負荷はかからないと思うのですが、いったんボトルネック判定されたら、そこからの対策が難しいので、たまーに参照するぐらいの頻度にしておきます。。。
2012年01月06日
この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/52917906
この記事へのトラックバック
http://blog.sakura.ne.jp/tb/52917906
この記事へのトラックバック
また Mnesia に暗号化してデータを放り込むくらいなら EMysql や epostgres などを使って外部 SQL を使った方がいいと思います。
Mnesia は「あくまで erlang term がそのまま保存できる」というメリットがあるデータベースですので。
なるほど、CPUが律速になりますか。あとで自分でも試してみますが、確かにPortよりも先にボトルネックになりそうですね。
Mnesiaに暗号化してから入れる点については、自分でも「インピーダンス ミスマッチ」かなあとは考えたのですが、Mnesiaを使うからにはフロントのWeb(Yaws)サーバーにRAMのDBを立ち上げたくなるので、そこにむき出しのパスワードとかむき出しのメアドを置くのも気持ち悪いなあというところがありまして。
MnesiaはSQLじゃないので、SQLインジェクション攻撃とかとは無縁なわけですが、「気持ち悪い」感がぬぐえなくて。気にしすぎなのかなぁ。。。