日本OSS貢献者賞を受賞しました

このたび、第10回 日本OSS貢献者賞 を受賞いたしました。 非同期メッセージングライブラリ「MessagePack」、分散Key-Valueストア「kumofs」、ログコレクタ「Fluentd」、バルクデータローダ「Embulk」、Presto向けゲートウェイサーバ「Prestogres」など、大学…

Embulkでやりたいことリスト(2015年7月版)

バルクロード機能 1つの設定ファイルで複数ジョブを実行する Running multiple jobs using one config file · Issue #167 · embulk/embulk · GitHub 例えば users.csv と histories.csv の2つのファイルを、それぞれPostgreSQLにある users と histories の2…

Re: 論理削除はなぜ「筋が悪い」か

Kazuhoさんの論理削除はなぜ「筋が悪い」かを読んで。 UPDATEが発生しないテーブルならば、削除フラグを使った実装手法でも現在の状態と更新ログを別々に表現でき、結果として効率と過去の情報を参照できるメリットを簡潔に両立できるのではないか、という話…

Embulk 0.3 & 0.4 の新機能 - リジュームとJavaプラグイン

つい先日*1、Embulk の新しいメジャーバージョンを2つリリースしました。 これらのバージョンでは、データ転送ミドルウェア勉強会で得られたフィードバックを元に、リジューム機能、Javaプラグイン機能、そして プラグインテンプレートジェネレータ を追加し…

並列データ転送ツール『Embulk』リリース!

こんにちは。古橋です。 先日の*1 データ転送ミドルウェア勉強会で、新しいオープンソースツール Embulk をリリースしました。 Embulk, an open-source plugin-based parallel bulk data loader from Sadayuki Furuhashi Embulk は、リアルタイムなログ収集…

データ転送ミドルウェア勉強会

Treasure Data, Inc. 古橋貞之です。 来たる1月27日、新しいOSSツール Embulk をリリースします。EmbulkはFluentdのバッチ処理版のようなツールで、CSVデータやアクセスログなどの構造化データを高い信頼性で転送することができるコンパクトなツールです。 …

続・リトライと冪等性のデザインパターン - リトライはいつ成功するか

三度の飯よりエラー処理。古橋です。大変好評をいただいた序章リトライと冪等性のデザインパターンの続編です。 前回はほぼ前置きでしたが、今回は冪等でない操作を冪等にする具体的なテクニックもまとめていきます。 パターン2:エラーを区別してDELETEを…

リトライと冪等性のデザインパターン

リトライを肴に一晩酒が飲める古橋です。大規模なデータに触れることが日常茶飯事になっている今日この頃。この分野のおもしろいところは、いつまで経っても終わらないプログラムを簡単に作れてしまうことかもしれません。エラー処理、リトライそして冪等性*…

デシリアライズ速度の比較 ByteBuffer vs DirectBuffer vs Unsafe vs C

OpenJDK や Hotspot VM には sun.misc.Unsafe という内部APIがあり*1、これを使うと ByteBuffer.getInt や ByteBuffer.getLong よりも高速にバイト列から整数値をデコードできるという。これを駆使することで、Cで実装された拡張ライブラリに匹敵する速度を…

Presto 0.54を1台のサーバで起動する

Presto | Distributed SQL Query Engine for Big Data v0.54 を1台のサーバ上で動かす手順です。Mac OS X でも動きます(と言うよりMac OS Xを想定しています) JDK 7 が必要になるので、事前にインストールしておいてください。Oracle JDK(Mac OS X版)を…

Fluentd Casual Talks #3

Fluentd Casual Talks #3 でしゃべってきました。会場提供していただいた DeNA さん、主催の@tagomorisさんありがとうございましたm(_ _)m What's new in v11 - Fluentd Casual Talks #3 #fluentdcasual from Sadayuki Furuhashi Ustreamで録画されているの…

データの更新履歴をRDBMSからfluentdに流すfluent-plugin-sql

Fluentd Advent Calendar 9日目。担当の古橋です。 Fluentd v11の情報は Fluentd Casual Talks #3 at :D でお話しすることにして、今回はFluentdの大幅な性能向上を可能にするMultiprocessプラグインを紹介…しようと思っていたら@niku4i さんに先を越されて…

「分散システムのためのメッセージ表現手法に関する研究」 - 筑波大学大学院を卒業しました

このたび筑波大学大学院を卒業し、修士号を取得しました。卒業にあっては本当に多くの方々にご助力いただきました。この場を借りて御礼申し上げます。ありがとうございました。 現在は起業して、12月からアメリカに在住しています。新たな価値を生み出すべく…

MessagePack for Java ついに 0.6 リリース!

先日の fluent に引き続き、新しいソフトウェアのリリースです。 満を持して、MessagePack for Java 0.6 をリリースしました! 9ヶ月ぶりのメジャーバージョンアップです。 以前のバージョン 0.5 の API をすべて見直し、互換性を維持しながらも、数多くの機…

イベントログ収集ツール fluent リリース!

こんにちは。Treasure Data の古橋です^^; 先日の Treasure Data, Inc. 壮行会 で、イベントログ収集ツール fluent をリリースしました!Fluent event collector fluent は syslogd のようなツールで、イベントログの転送や集約をするためのコンパクトなツー…

MessagePack-Hadoop Integration (HBase勉強会)

Hbase勉強会(第二回)で発表したスライドを公開しました:MessagePack+Hadoop (HBase-study 2011-06-16 Japan) - Scribd MessagePackとHadoopを連携させるプロジェクトは、github の msgpack/msgpack-hadoop で進行中です。 HBase や Hive で、非構造化デー…

MessagePack IDL 仕様案

先日のMessagePackハッカソンで議論した、MessagePack IDL の仕様についてまとめます。 実際のユースケースを元に、大規模な分散アプリケーションまでカバーできる実践的な仕様を目指しました。 基本的な文法 IDLは、大きく分けて 型の定義 と サービスの定義…

第3回MessagePackハッカソン開催報告

4月3日、MessagePackハッカソン第3回を開催しました。 14人のユーザーと開発者が集まり、実際のユースケースを元にしながら多くの問題が解決(への方針が決定)しました。 リンク MessagePack-RPC Erlang(α版くらい) MessagePack for OCamlを公開しました …

Webサイトをgithubで管理してpush時に自動的に同期する方法

Webサーバに Subversion のサーバを立てておき、HTML や CSS を commit することでWebサイトを更新する方法は、良く知られているテクニック、らしいですね*1。更新の履歴を残すことができるし、ましてチマチマとFTPやsftpでアップロードするよりずっと簡単で…

Amazon EC2 で手元のホストとファイルを共有する

Amazon EC2 はVMを好きなタイミングで好きなだけ使うことができるので、複数のサーバを使う分散システムの検証環境として非常に使いやすい*1。費用を計算してみても、自宅でクラスタを動かすことを考えれば、十分安く上がりそうである。 しかし、VMを起動す…

共有ホームディレクトリ環境の管理方法

MacPorts や apt などのパッケージ管理システムでインストールできないアプリケーションやライブラリ、自分で書いたツールなどを、ホームディレクトリにインストールしたいことは良くある。 ホームディレクトリならroot権限が要らないし、rootを持っている場…

mplexでソースコードレベルメタプログラミング

Webアプリケーションを作るとき、HTMLを生成するテンプレートエンジンをよく使いますが、これはパラメータに応じて様々なコードを生成する自動生成ツールであると言えます。 mplexは、プログラムを生成するためのテンプレートエンジンです。 実は MessagePac…

MessagePack for PHP@Webホスティング

先日 phpのserializeを使うより高速でサイズもコンパクトに仕上げる「MessagePack」とPHP拡張 でも紹介されている MessagePack for PHP ですが、Webホスティングサービスにも標準で組み込まれ始めているようです: Joe’sウェブホスティング、高速シリアライ…

Kyoto Tycoon に MessagePack-RPC をプラグインして Java から使う

Tokyo Cabinet を始めとする Tokyo シリーズの作者として知られる平林幹雄さんですが、Tokyo シリーズに続く新製品として、Kyoto シリーズがリリースされています。 Kyoto Tycoon(以下KT)は、ネットワーク経由で使えるデータベースサーバで、Tokyo Tyrant…

世界の「NoSQL」開発者が東京に集結 - NOSQL afternoon in Japan

NoSQLと呼ばれる新型の分散データストアの開発者が一堂に会するイベント NOSQL afternoon in Japan が、2010年11月1日、楽天タワーで開かれました。 海外からは「Cassandra」のサポートを行う Riptano や、「MongoDB」を開発する 10gen、「Couch DB」の Clou…

高速メッセージングシステムMessagePack - 楽天テクノロジーカンファレンス2010

もはや先月のことですが、楽天テクノロジーカンファレンス2010で発表してきました。 MessagePackについて、かなり詳しく紹介しています。 MessagePack Rakuten Technology Conference 2010View more presentations from frsyuki.Ustream.tvの録画はこちら Me…

日本OSS奨励賞を受賞しました

このたび、独立行政法人 情報処理推進機構 日本OSS奨励賞を受賞いたしました。ITPro 他に受賞された方々の名前を拝見すると恐縮ではありますが、高く評価していただいたことを大変光栄に思います。 受賞理由は、「分散Key-valueストアである「kumofs」を開発…

MessagePack for Java 0.4 開発版リリース!

バイナリシリアライズ形式 MessagePack のJava版の最新版をリリースしました! 新しいAPIを大量に追加し、使い勝手が大幅に向上しています。 今回は開発版のリリースで、安定版のリリースはもう少し先になります。 こういうAPIの方が良いのではないか、ここの…

RubyKaigi2010でトークしてきました - The MessagePack Project

つくばで開かれたRubyKaigi2010で、多言語間通信ライブラリ MessagePack についてLTしてきました。 音声付きの動画をニコニコ動画で見られます(スバラシイ!)。ぴったり5分に収まりました^^; 発表資料(PDF) 発表資料(クリックで進む動画) Twitterを見…

WebSocketでブラウザにプッシュ配信する - MessagePack-RPC+Rev-WebSocket

先日、WebSocketのサーバライブラリ Rev-WebSocket をリリースしました。 前回のエントリではブラウザ同士で通信するチャットアプリケーションを紹介しましたが、実際にはTwitterクローラやWebアプリケーションなど、別のプログラムと連携してブラウザにプッ…

WebSocketサーバライブラリ rev-websocket リリース

いま WebSocket がにわかに注目を集めているようです。 ブラウザとサーバの間でリアルタイムな双方向通信を実現する機能で、HTML5に追加された(される予定の)新しい仕様です。 このWebSocketを使うには、ブラウザ側のJavaScriptの記述だけでなく、サーバ側…

『Amebaなう』リアルタイム検索機能に Apache Solr と MessagePack を採用

ミニブログサービス「Amebaなう」に検索機能を追加 Apache Solrのカスタマイズにより検索パフォーマンスが大幅向上検索機能は、当社の研究開発組織「インキュベーションラボラトリー」が開発し、Apache Solrをベースに、検索インデックス作成アルゴリズムの…

進化するMessagePackプロジェクト - Webサイトリニューアル

MessagePack Project のWebサイトをリニューアルしました! 新しいURLは、http://msgpack.org/ です。 シンプルなイメージから若干趣を変え、完成度が高くてリッチな印象を重視しました ;-) 文章ではシリアライズの速度に加えて、RPCの意欲的な設計を強調し…

シリコンバレーにいます

6月5日から6月27日までの約3週間の間、サンフランシスコ・マウンテンビューの周辺に滞在しています。 実は日本国外に脱出したのは今回が初めてで、飛行機に乗る段階から驚きの連続です^^; 滞在先のホテルから撮影した風景。眼前にはサンフランシスコの町並み…

kumofsのメーリングリストができました

できました。興味のある方はぜひご参加ください^^; kumofs-jaに参加 メール: このグループにアクセス kumofsのウェブサイトも更新しています。管理とチューニングの項目を追加しました。 The Kumofs Project 英語版 英語のメーリングリストもあります。お気…

kumofs-0.4.0リリース - CAS操作をサポート

新たにCAS(Compare-And-Swap)をサポートした、kumofs-0.4.0をリリースしました。 memcachedのテキストプロトコルで、getsコマンドとcasコマンドを新たに使うことができます。 後方互換性は保たれています*1。新機能を利用するには、kumo-gatewayとkumo-ser…

The Kumofs Project

分散key-valueストア Kumofs のWebサイトをオープンしました! The Kumofs Project Webサイトには、LinkedIn で開発された分散Key-valueストアである Voldemort との速度比較を掲載しています。kumofsはVoldemortと比べて、倍以上の読み込み性能を、半分以下…

kumofs-0.3.6リリース - kumo-gatewayバグフィックス

kumofs-0.3.6をリリースしました。 kumo-gatewayのバグフィックスです。 一部のmemcachedクライアントライブラリでkumo-gatweayにアクセスすると、kumo-gatewayが落ちる可能性があったのを修正しました。

並列メッセージングフレームワーク「MessagePack-RPC for C++」リリース

分散KVS kumofs のコードは、全体で約2万行です。 そのうち、ネットワークI/Oやプロトコルに関するコードは約1万行で、全体の約半分を占めています。 並列イベント駆動I/Oフレームワーク「mpio」リリース ネットワークアプリケーションを実装する上で、もっ…

ニコニコ動画、分散Key-valueストア「kumofs」を導入

つい先日、ニコニコ動画モバイルの一部でkumofsを導入した というお話を伺いました。 まだまだ利用は一部でしか始まっていないようですが、これからデータを取りながら運用実績を作っていきたいとのことでした。 kumofsは、バージョン0.3.3でflagsの保存に対…

kumofs-0.3.5リリース - expire対応

分散Key-Valueストア kumofs のバージョン0.3.5をリリースしました。 今回のアップデートで、expiration timeに対応しました。 kumofs-0.3.5.tar.gz kumo-gateway に -E オプションを付加すると、memcachedのテキストプロトコルでexpiration timeを指定する…

MessagePack for C++ 新機能追加 - 0.5.0リリース

MessagePack for C++のバージョン0.5.0をリリースしました。 静的型のオブジェクトから msgpack::object を作成できるようになりました MSGPACK_DEFINEマクロが定義されたクラスは、msgpack::object に変換できます デシリアライザに新しいAPIを追加しました…

mp::syncとMP_UTILIZE

並列イベント駆動I/Oフレームワーク mpio のバージョン0.3.3をリリースしました。 mp::wavy::loopクラスに flush() 関数を追加 mp::pthread_scoped_{,rd,wr}lockクラスに owns() 関数を追加 mp/wavy.hでstdint.hをinclude Downloads mpioライブラリには、並…

hbstudy#10「ずばり動く!kumofs と ずばり動かないケース」

ずばり動く!kumofs と ずばり動かないケース と題して、hbstudy#10 で発表してきました。 序盤の趣旨は丸レク2010と共通しながらも、別の側面とストーリーから紹介してみました。 また今回は、列指向DBなどの他の分散データストアとの違いについても紹介し…

丸レク2010「分散Key-valueストアkumofsの思想と設計」

分散Key-valueストアkumofsの思想と設計 と題して、丸レクセミナー2010で発表してきました。 kumofs を使いたくなるユースケースの紹介を中心に、kumofs のメリットを紹介しています。 会場は楽天タワーで、何やらスゴイ数の方に聞いていただけたようです。…

kumofs-0.3.4リリース

kumofs-0.3.4をリリースしました。 一部のmemcachedクライアント(具体的に言えばmemcached client for java)でkumofsを利用できなかったところが、利用できるようになりました。 今回のアップデートではid:terurouさんにご協力いただきました。ありがとう…

kumofsでflagを保存できるようになりました

kumofs-0.3.3をリリースしました。 memcachedのテキストプロトコルでflagを保存できるようになりました。flagを保存するには、kumo-gatewayに-Fオプションを付加してください。 以前は memcached client for java や spymemcached などの一部のmemcachedクラ…

並列イベント駆動I/Oフレームワーク「mpio」リリース

分散KVS kumofs のコードは、全体で約2万行です 22,030行。2010-04-12現在">*1。 そのうち、ネットワークI/Oやプロトコルに関するコードは約1万行 9,931行。">*2で、全体の約半分を占めています。 ロジックは残りの半分*3だけで実装されています。 この実例…

MessagePack-RPCのプロトコル仕様(ドラフト)と実装例

以前に書いた MessagePack RPC プロトコル は少し古くなってしまったので、ここでまとめ直しておこうと思います。 MessagePack-RPCのプロトコルは、非同期型の呼び出しができる点(非同期プロトコル)が大きな特徴となっています。複数のサーバが相互に通信…

コンパイル済みのgemパッケージを作るRubyGemsプラグイン

拡張ライブラリを含んだgemパッケージから、コンパイル済みのバイナリを含んだgemパッケージを作るツールを作りました。 gem-compile@github Windows向けにコンパイル済みの拡張ライブラリを配布したいときに便利です。 コンパイラが入っていない環境に拡張…