タグ

ブックマーク / mocobeta-backup.tumblr.com (7)

  • moco(beta)'s backup: 辞書内包/Pure Python実装の形態素解析器 Janome を公開しました

    一応の基機能がととのったので、できたてほやほやではありますが、Python製の形態素解析器 Janome を公開しました。 http://mocobeta.github.io/janome/ インストール方法や使い方は上記ページを見てください。 ソースコードはGithubにおいています: https://github.com/mocobeta/janome 【公開にいたった背景など】 日語テキストを分析したりテキストマイニングする場合、まずは形態素解析から始めると思います。 Python の場合、そのためには MeCab をインストールして、mecab-ipadic をインストールして、mecab-python をインストールする、という手順を踏むことが多いと思うのですが、環境依存のところでハマって面倒な思いをしたり、サーバ構築の手間がかかったり、しますよね。なので、Pythonモジュ

  • moco(beta)'s backup: KVS性能比較 - memcached / Couchbase / MongoDB / Redis

    手軽なKVSとして使えるNoSQL系データベースは沢山あるわけなのですが、単体サーバのset/getの性能に注目して性能比較を行いました。memcachedをベースラインとして、どの程度その性能に追いつくかを調べるのが主目的です。(揮発性のキャッシュでよければmemcached + Consistent Hashing 最強なのですが、永続化できるとうれしい場合があります。。。) [2014.03.21 追記] ベンチマーク系のエントリって、少ないもんだから適当に書いても検索上位にきてしまうらしい、こわい。反省している… [追記ここまで] 計測対象プロダクト memcached v1.4Couchbase v2.0 MongoDB v2.2 (*1)Redis v2.6(*1) MongoDBRDB並にクエリが書けるくらい機能豊富で、来こういう比較でもってくるのは不公平なのですが.

  • moco(beta)'s backup: [Tips] マルチスレッドで負荷生成テンプレ(Python)

    スレッドをたくさん生成して何かに負荷をかけたい場合があります。JMeterなどのツールが使える口が用意されている場合はいいのですが、コードを書かないといけない場合も多いです。自前のライブラリとか、Memcachedとか、Memcachedとか。そのたび、Pythonで毎回同じようなコードを(思い出しながら)書いているので、テンプレとして残しておくことにしました。 生成するスレッド数と、負荷をかける時間を引数にとり、処理をループするだけの簡素なものです。最初は、メインスレッドでsleepして時間がきたらスレッドをぷちっと止める、などやっていましたが、さすがに乱暴かと思ったので、ループごとに経過時間を計算しています。 Ctrl-C を押したら全スレッドにシグナルを送って中断…など賢いことはやっていません。 [2012.07.16 修正] スレッドに停止フラグを用意して、Ctrl-C を押したら

  • moco(beta)'s backup: Redis でロックを実装する (1)

    「Redis入門」6.2節「分散ロック」について Redis のトランザクション (Python版) で、WATCH / UNWATCH コマンドを使った簡易な楽観ロックを使いましたが、6.2節では(悲観)ロックの実装方法が紹介されていて、実用的&面白かったので試してみました。 Redis 自体は(悲観)ロックの機構をもっていないので、排他制御をしたい場合は自前で構築することになります。キーが存在しない場合にかぎり値をセットできる SETNX コマンドを使って、予約したいリソースに応じたキー(全クライアントで共通の約束事)に一意な識別子をセットすることで、セマフォ(Mutex のほうが正確な表現かな?)を実現できます。キーが存在していなかったらユニークな(ロックしたのが自分だと後でわかるようにするため、必ず一意になるようにする)識別子をバリューにセットしてロック獲得成功、キーがすでにあった

  • moco(beta)'s backup: Redis のレプリケーション (1)

    「Redis入門」4章つづき。レプリケーションについて。 Redis は、マスタースレーブ型のレプリケーション機能を提供しています。 1台のマスターは複数台のスレーブをもつことができます。非同期/ノンブロッキングなので、マスター側・クライアント側ともに、レプリケーション中もクライアントからのリクエストを受け続けます(非同期という性質上、ごく僅かですがレプリケーション時のデータロスの可能性はあります)。 また、スレーブは別のスレーブのマスターになることができるので、マスタースレーブの構成を多段にすることで、マスターの負荷を抑えつつ読み出しをスケールアウトすることが可能です。 仕組みについていくつかメモ ※ v2.8 時点 詳細は公式ドキュメントの Replication の項目を参照してください。 スレーブから接続要求(SYNCコマンド)がきたら、マスターは現在のスナップショット(RDB)を

    moco(beta)'s backup: Redis のレプリケーション (1)
  • moco(beta)'s backup: Redis Sentinel を動かしてみる (1)

    Redis Sentinel は、Redis インスタンスを複数立ち上げて、マスター・スレーブ構成をとる際の、HA周りを支援する仕組みです。2014/5 現在 “beta stage, active development” ですが、プロダクション環境での利用も可能 (already usable) のようです。 Redis Sentinel は具体的に、以下の機能を提供します。 インスタンスのモニタリング(死活監視)Sentinel API による障害通知(※プッシュ通知ではないので要ポーリング)自動フェイルオーバー(マスターのDOWN検知とスレーブのマスター昇格)サービスディスカバリ(≒ 現在のマスターのアドレスはどれか)設定項目など、詳しいことは後回しにして、とりあえずモニタリングと自動フェイルオーバーを試してみたメモ。 【参考】 すでに試している・使っている方がたくさんいますが、日

  • moco(beta)'s backup: [Tips] Python から Redis を使う (1) ~ STRING を操作する ~

    ==== まえおき ==== 少しきちんとRedisを使えるようになろうと思い、「Redis入門」(「Redis in Action」の日語訳)を読んでいます。サンプルコードは Python で書かれていますが、何かしらの言語でプログラミング経験があれば、とくにPythonの知識はなくても追えると思います。 1, 2章はRedisの紹介、3, 4章が少し深い説明、5, 6, 7, 8章が(かなり実用的な)応用例、9, 10章がチューニングやスケーリングといった運用の話題、11章がLuaスクリプティングの話題、という構成になっています。 第3章 “Redisのコマンド” を足がかりに、redis-py (公式で推奨されているPythonクライアント) から Redisのコマンドを叩いてみたメモを残しておきます。 なお、redis-py のREADMEにあるとおり、StrictRedis ク

  • 1