ウィリアムのいたずらの、まちあるき、たべあるき

ウィリアムのいたずらが、街歩き、食べ物、音楽等の個人的見解を主に書くブログです(たま~にコンピューター関係も)

NoSQLのMongoDBをNode.jsでアクセスしてみる

2012-01-31 16:50:26 | そのほか
MongoDBについては、

NoSQLのMongoDBを立ち上げてみる
http://blog.goo.ne.jp/xmldtp/e/03c3407abbc1897423569441aa0bd976

さらに、

NoSQLのMongoDBをJavaでアクセスしてみる
http://blog.goo.ne.jp/xmldtp/e/9baed46c53212a6a14ccfe24d13d8839

で、javaでアクセスするところまではやった。
今回は、Node.jsでアクセスしてみる。

なお、今回は、以下のブログの内容を参考にしています。

node.jsでMongoDBを扱う
http://d.akiroom.com/2011-10/node-js-mongodb-native/





■ダウンロード&インストール

npmをつかって、
npm install mongodb
を実行するとはいる。





■ソースを作成
以下のソースをhelloworld3.jsという名前で作成しました。
var http = require('http');
var mongo = require('mongodb/lib/mongodb');
var server = http.createServer(
    function (request, response) {
	response.writeHead(200, {'Content-Type': 'text/plain'});
	var db = new mongo.Db('test',
			new mongo.Server('localhost',mongo.Connection.DEFAULT_PORT, {}), {}); 
	db.open(function(err, db) {
		if ( err )
		{
			response.write("err:"+err);
			response.end();
		}
		else
		{
  			db.collection('things', function(err, collection) {
			if ( err )
			{
				response.write("err:"+err);
				response.end();
			}
			else
			{
 				collection.find(function(err, cursor) {
				if ( err )
				{
					response.write("err:"+err);
					response.end();
				}
				else
				{
					cursor.each(function(err, item) {
					if ( err )
					{
						response.write("err:"+err);
						response.end();
					}
					else
					{
						if ( item != null )
						{
							for (key in item)
							{
								response.write(key+":"+item[key]+"\n");
							}
						}
						else
						{
							response.write("end");
							response.end();
						}
					}
        				});
				}
      				});
			}
			});
		}
	});  
    }
).listen(8124);



なんか、汚いプログラムになっちゃってごめんなさい。
ローカルホストにある、testというDBの中に、'things'というコレクションがあって、
それをとってきて、中身を表示するプログラムです。
require('mongodb/lib/mongodb')のところは、置き場によって書き換える必要があるかもよ。





■立ち上げ

前回同様、
・まず、mongoサーバーを立ち上げます。
 つまり、mongodを起動します。
 (mongoでなく、mongod、サーバーのほうです)

・次に、node.jsを起動します。


・そしたら、ブラウザから、http://127.0.0.1:8124/をアクセス。


なかんじで表示できた。




今回はここまで

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

ソフトウェアの品質説明力強化のための制度フレームワーク

2012-01-31 13:55:26 | Weblog
というものがあるらしい。
そして、その中間報告が、


「ソフトウェアの品質説明力強化のための制度フレームワークに関する提案(中間報告)」の公開
http://sec.ipa.go.jp/reports/20110930.html


にでている。
品質保証というと、従来の枠組みは、発注者、受注者で考えるものだったけど、
第三者が保証するという枠組みも確かに必要で、
さらに、いろいろな国際的な品質保証にも沿わないといけない。
そんなことが書いてある。

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

軽工業→重工業→電子産業→情報産業→で、つぎは?

2012-01-31 10:24:29 | Weblog
 産業構造は、軽工業→重工業→電子産業という具合に進展してきた。

 ちょっと前の日本では、電子産業(テレビ等も含む)が盛んで、
   今韓国・中国では、電子産業が盛ん・・でも成熟期に入ってきたのかな?。
 ほんの少し前の日本では、情報産業が盛んで、
   今韓国・中国では、情報産業が盛ん。たぶん成長期?


 これらの産業構造の変化は、前の産業が発展したから、次の産業が興るという具合になっている。
 電子産業が成熟したから、その上に情報産業が成り立った。

 と考えると、今後は、情報産業の主役である、コンピューターがあるからこそ出来る産業に、先進国はシフトしていくということだろう。



 少し前を行っているアメリカは、バイオとか、エネルギーとか、宇宙産業とか、コンピューターを使った上に成り立つ産業で、模索を始めている。
 たぶん、日本も、電子産業や情報産業は、韓国・インド・中国に任せて、次の産業へとシフトしていかないと、大きなお金は得られないだろう。


 ソニーとか、電子・情報で売ってきた会社は、曲がり角なのかもしれない。

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

クレジットカードがなくても、クレジットカード払いできるサービスがあるらしい

2012-01-30 10:42:43 | Weblog
って、知人から聞いたので、メモメモ!

ジャパンネットバンクの「ワンタイムデビット」(正式名は”JNBカードレスVisaデビット”って言うらしい)っていうのがそれ。

商品説明は、

商品概要
http://www.japannetbank.co.jp/service/payment/cardless/detail.html


にあるけど、こういう話らしい。

・(前提:ジャパンネットバンクに口座があり、
     たぶん、その口座の残高>買いたい商品)


・ジャパンネットバンクで、カード発行画面で利用限度額(10万まで)を入れて
 カード番号を発行してもらう
 →ログインする。当然。
  あと、あの、トークン(口座開いている人はわかるはず)がいるらしい。

・買いたいネットショップにいく

・クレジットカード払い:カードはVISAでそのカード番号で、精算する
 →10日以内?

・お買い物できる

というらしい。

へ~、私のように、カード持っていない人にとっては、銀行振込じゃなくっても使えるので便利便利!
他の人(カード持っている人)は、1回きりなので、安心安心とかいっていた・・・

・・・そこで、いろいろ、「べんりだよねえ、これ!」っていう話になったんだけど、
なんか、宣伝みたいになってきちゃうので、この辺でやめときます・・

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

そもそも、NHKって、受信料で成り立ってるんだから、視聴率取りに行くことないんじゃないの?

2012-01-29 22:55:27 | Weblog
ここの痛いニュース

NHK大河「平清盛」低視聴率挽回へ、濡れ場シーン投入…関係者「大河になかったような過激で激しいシーン予定」
http://blog.livedoor.jp/dqnplus/archives/1692932.html

によると(以下太字は上記サイトより引用)

2つ目の濡れ場が、主演の松山ケンイチ扮する平清盛が童貞を捨てるシーン。法皇の愛人“祇園女御”と後白河法皇(松田翔太)の今様の師匠“乙前”の1人2役に扮する松田聖子がキーマンとなる。

「武芸ばかりに励んできた無骨な清盛は歌や和歌などとは無縁な男。当然、女も知らない。そんな清盛に“乙前”が初めて性の手ほどきをするんです。


乙前=松田聖子さんです。
え~、つまり、松田聖子さんの濡れ場で視聴率UPをねらうようです。


“汚い”とは言わせない。


いや、もっといわれそうな気がする・・・

きっと、これでだめなら、AKB48を出して、さしこの落馬シーンとかになっていくんだろうな・・・

うん、民放的な発想だ。民業圧迫ではないか・・・圧迫するほど、視聴率ないか・・(^^;)




ビッグヒットを狙うなら、「家政婦のミタ」みたいに、社会現象にならないといけない。
社会現象にするには、テレビを話題にしやすい、小中学生を巻き込むようなものにしないといけない。
家政婦のミタが成功したのも、小中学生が「承知しました」といいだし、その言葉が、大人の間でも流行ったからだ。AKBが受けるのも、小中高校生の影響も大きいだろう


・・・ってことは、エロ路線にすることで、小中学生が見られなくなると、逆効果ということだ。
そのあとにAKBとかを投入しても遅い。そもそもAKBだけでは、そう視聴率は上がらないだろう

(民放は、AKBで結構こけている)




社会現象をおこすんなら、なにか、単純な、かつ元気が出るけど、あたまに残りやすい
キーワードを作って、それをあるタイミングで連呼することだ。

家政婦のミタなら、「承知しました」
水戸黄門なら、「この紋所が目に入らぬか」

だけど、「ファイト一発」みたいなかんじで、平安っぽいことば。

そうすると、その言葉が出てくることを期待し、出てくることで安心する。
そういう予定調和的なものって、お年寄りに受ける。
また、子供もその言葉を(意味がわからなくっても)学校で使いはじめ、
一般社会でも使われると、社会現象になり、視聴率も上がるだろう




ただ、NHKがそんなことする必要があるんだろうか?
そもそも、NHKって、受信料で成り立ってるんだから、
視聴率取りに行くことないんじゃないの?

記録ではなく、記憶に残るような番組を作るべきでは?
(「そのとき歴史が動いた」のような・・・)

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Linuxで、IPを振り、ルーティングテーブルを追加するためのコマンド

2012-01-28 10:12:56 | Weblog
1.IPアドレスを振る

ifconfig インターフェース名 振りたいIPアドレス

(例) インターネットの口がeth0だとして、それを192.168.1.1にしたい
 ifconfig eth0 192.168.1.1


2.ルーティングテーブルにデフォルトゲートウェイ追加
(例)192.168.1.254がデフォルトゲートウェイ
route add default gw 192.168.1.254

3.ルーティングテーブルをみる
netstat -nr


※サーバー側でフォワーディングさせる場合、
/proc/sys/net/ipv4/ip_forward
のファイルの中身を1にする

※管理者権限が必要なので、
  sudo /bin/bash
 で、そのシェルの中で、上記コマンドを行う

・2で、route delにすると、ルーティングテーブルから削除される。


参考

http://www.atmarkit.co.jp/fnetwork/netcom/ifconfig/ifconfig.html
http://www.atmarkit.co.jp/fnetwork/netcom/route/route.html

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

機能要件・非機能要件と、レビュー、テスト、形式仕様、シミュレーションの関係

2012-01-27 18:40:34 | そのほか
をまとめてみる。

■機能要件において、
プログラムが出来れば、単体・結合テストをすれば調べられる
しかし、それまでにおいては、
  ・レビューで確認する
  ・形式仕様記述で確認する
ということが考えられる。
「このことが起こったら、ぜったいこれは起こらない」というようなことを調べる場合は、
これをLTL式にして、SPINとかでも調べられるかもしれない
(=モデル検査も可能な部分がある)



■非機能要件において、
プログラムが出来れば、総合テストをすれば調べられる
しかし、それまでにおいて、
  ・レビューで確認する
  ・形式仕様記述で確認する
ことには、限界がある。性能評価とか、競合とかは、レビューでは難しいところがある。
この場合
  ・モデル検査(形式仕様の一部と考えられる)
  ・シミュレーション
を利用する。
モデル検査が全数チェックするのに対し、シミュレーションは乱数を発生させるので、(シミュレーションは)必ずしも全部は調べていない。だから、バグを全てつぶしているかどうかは判らないが、問題を早期に発見することには貢献している。


なかんじかしら。




  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

NoSQLのMongoDBをJavaでアクセスしてみる

2012-01-27 15:24:16 | そのほか
この前、

NoSQLのMongoDBを立ち上げてみる
http://blog.goo.ne.jp/xmldtp/e/03c3407abbc1897423569441aa0bd976

というのを書いて、立ち上げるところまでは、やったけど、アクセスはしていなかった。
今回は、Javaでアクセスしてみる。




■ドライバダウンロード

ここ

mongo-java-driver
https://github.com/mongodb/mongo-java-driver/downloads

から、mongodbのjavaのドライバをダウンロードする。

今回は、mongo-2.7.2.jarをダウンロードしました





■プロジェクト作成

eclipseでプロジェクトを作成後、

そのプロジェクトのビルドパスに今ダウンロードしてきたmongo-2.7.2.jarを加えます
 →プロジェクトを選択して右クリック、プロパティを選択したら、
  Javaのビルドパスを選択し、外部Jarの追加のボタンで追加する

そうしたら、クラスを作成し、


Java Tutorial
http://www.mongodb.org/display/DOCS/Java+Tutorial

を参考に、プログラムを作ります。
今回作ったのは、こんなかんじ


import com.mongodb.DBCollection;
import com.mongodb.DBCursor;
import com.mongodb.Mongo;
import com.mongodb.DB;

public class MyMongo1 {
	public static void main(String[] args) {
		Mongo m;
		try {
			m = new Mongo();
			DB db = m.getDB("test" );

			DBCollection coll = db.getCollection("things");
			DBCursor cur = coll.find();

			while(cur.hasNext()) {
	            System.out.println(cur.next());
	        }

		} catch (Exception e) {
			e.printStackTrace();
		}

	}

}







■実行

・まず、mongoサーバーを立ち上げます。
前回やったように、mongodを起動します。

mongoでなく、mongod、サーバーのほうです。

・そしたら、プロジェクトを実行します。
 途中、どれを実行してくるか聞いたら、このクラスを指定します。

ソースと、実行結果は、こんなかんじ



  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

「ゲイツ氏 次世代型原子炉開発を」のNHKの記事なんだけど・・・

2012-01-27 11:01:38 | Weblog
NHKのここのニュース

「ゲイツ氏 次世代型原子炉開発を」
http://www3.nhk.or.jp/news/html/20120127/t10015569971000.html
(以下太字は上記サイトより引用)

「マイクロソフト」の創業者のビル・ゲイツ氏は、NHKとのインタビューで、安全性や経済面で優れた次世代型の原子炉の研究開発に積極的に資金を出していく考えを明らかにしました。


いまどき、原子力?っていうのはさておいて、
この投資先って、前に日経にでていた、


ゲイツ氏と中国、原発開発で接近 「強力連合」に衝撃 小型炉、競争力を左右
http://www.nikkei.com/news/headline/article/g=96958A9C889DE1EAE2E0E3EAE5E2E3E6E2E3E0E2E3E0868BEBE2E2E2

(以下斜体は上記サイトより引用)

ビル・ゲイツ氏が先月、次世代小型原子炉の開発で中国政府と提携を検討していると認めたことだ。

の中国の話でしょ、たぶん。


中国で開発されて、なにか事故おこされると、こまるのよね。
日本にも影響あるでしょ。
そして報道されない・・・

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

モデル検査か、シミュレーションで気づけないの?docomoのSPメール問題

2012-01-26 22:47:42 | トピックス
 SPメールの問題が、どうして起きたのか、日経ネットワーク2012年2月号の14、15ページに載っている。

 これって、ロジック的なミスに見えるんだけど・・・

 こういうのって、モデル検査とかで、気づけないのかなあ?
 端末と各サーバーをモデル化して、やりとりのところを通信で書いて、
 「電話番号が一度振られたら、その後常に、電話番号は変わらない」っていうLTL式を書いて、
 SPINとかでチェックって、できないのかなあ?

 ま、この辺は、SPIN良くわかってないのでなんともいえないけど・・・

 NIIの吉岡先生とかが、こんなのをモデル化したら、きっとdocomoとKDDIは、
 TOPSEに大量に人を送り込みそうだ(^^;)



 ま、それはさておき、
 ネットワークのシミュレーションでも、気づかないのですかねえ・・?
 やっぱり、サーバーをモデル化して、電話をかけるエージェントを大量に発生させて、輻輳がおこるようになったら、どうなるか・・・とか・・

 こういった、非機能要件は、モデル検査やシミュレーション(モデル検査もシミュレーション見たいなもんなんだけどね)で確かめるようにしないと、まずくないですかね。
 レビューだけだと、複合的な問題が起きて、ロジック追えなくなった時に、思考停止して、見なかったことになってしまいそうな気がする・・・


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

memcachedをWindowsXPにいれて、Javaで操作する

2012-01-26 16:09:58 | そのほか
今度は、memcachedをいれてみよう。WindowsXPに。

といっても、話は簡単。




■ダウンロード
 Windows用のものが、

memcached for Windows
http://www.splinedancer.com/memcached-win32/

にあるから、「Downloads」の「memcached 1.2.4 Win32 Beta Binaries」をクリックして、
ダウンロードする。

そしたら、解凍する。




■インストール

インストールの仕方は、

memcachedのインストール
http://pentan.info/server/windows/memcached.html

に書いてある。

私の場合は、解凍したフォルダを、「memcached」というファイル名にかえ、
C:¥Program Files
の下に置いた(¥は、本当は半角。以下同様)。

そして、

cd C:¥Program Files¥memcached
memcached.exe -d install

を実行した





■起動

で、このあと、

スタート→コントロールパネル→管理ツール→サービスを選ぶと、以下の画面

が表示される。memcached Serverをダブルクリック。
以下の画面が表示される・・・?

もし、サービスの状態が停止になっていたら、開始ボタンをクリックし、
サービスを開始させる。これでOK




■Javaプログラミング

memcachedとつなげる、javaのクライアントが必要になる。
今回は、


spymemcached
http://code.google.com/p/spymemcached/downloads/list


を使った。そこの「spymemcached-2.8.0.jar」をクリックしてダウンロードした
(注意:javadocとかをダウンロードしても、リンクできないから注意)

そうしたら、eclipseでプロジェクトを作成し、プロジェクトが出来たら
そのプロジェクトを右クリックして、プロパティを選択、プロパティダイアログで
以下のように、落としてきた外部jarを選択する。

そうしたら、クラスを1つつくって、

Examples
http://code.google.com/p/spymemcached/wiki/Examples

の「Simple Example」を参考にプログラムを作り実行する。
作ったプログラムと実行結果は、以下のとおり。

(mainがあるところを聞かれたので、このサンプルのものを選ぶ。
 赤くなりっぱなし(右下)なので、クリックして切らないといけないのかも)

今回はここまで。

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

プロジェクトの完了日、クリティカルパスを、シミュレーションで確率的に求める方法

2012-01-26 10:46:46 | そのほか
プロジェクトのクリティカルパスを求めたり、
完了までに、何日かかるか?
という話は、情報処理試験に出てくる。

たとえば、ここ

平成19年 秋期 基本情報技術者 午前 問48
http://情報処理試験.jp/FE19b-am/k48.html


しかし、本来、プロジェクトの完了日を見積もるのに、標準日数だけで、よいのだろうか?

上記の図で、Aは、5日間と書いてあるが、
   本当は、最短で3日、最長で7日で、平均5日
かもしれない。

Hは、6日と書いてあるけど、
   最短で2日、最長で10日で、平均6日
かもしれない。

なので、標準日数を足していっても、本当に標準的な日数がわかるだけで、
実際は、早く終わってしまうときもあるだろうし、遅くなるときもあるだろう。
となると、標準日数を足すだけでは、だめだということになる。

どうするか・・・シミュレーションすることになる。

ということで、昨日、そのシミュレーションの話を聞いてきたので、メモメモ。
なお、例としては、上記の問題に書かれている図を基にする。
(昨日聞いてきた話は、違うアローダイアグラムだったけど、
 ここでは、それでやってみる)





■例(つけたし)

 上記「平成19年 秋期 基本情報技術者 午前 問48」
のようなアローダイアグラムになっているとする。

ここには標準日数しかかかれていないので、
最低これだけかかる、なんかあっても、ここまでには終わる(最高)という日数も
付け加えておこう。以下のとおり

    最低    標準    最高
A   3      5     7
B   1      3     5
C   4      5     6
D   8     10    25
E   5      5     6
F   6     12    24
G   3      3     3
H   2      6    10



Gの3、3、3というのは、3日で確実に終わるようなもの
(たとえば、申請書を出したら、受け取るのは、3日後とかならず決まっているようなもの)
また、Dのように左右対称にならないこともある。
(不確定な要素が多いようなとき)

パスは、図にあるとおりとする。

このとき、業務全体の所要日数と、クリティカルパスをしりたい。




■シミュレーションによる解法

1.A~Hまでの分布を三角分布に従うとする。
  そこで、A~Hの三角分布に基づいた乱数を1個づつ発生させる。

Wikipediaの三角分布

http://ja.wikipedia.org/wiki/%E4%B8%89%E8%A7%92%E5%88%86%E5%B8%83

をみてもらうと、パラメータa,b,cとあるけど、それに上記の、最低、最高、標準が入る。
そして、これらの分布に基づいて、ランダムにデータを発生してもらう。

Rでシミュレーションする場合は、三角分布を作んないといけない
このひとが、ここで示している例は、
説明がないので、確かではないが、ようするに、一様分布(runif)から作っている。
(一様分布を足すと、三角分布になる)
後述するCrystal Ballは、三角分布が入っているので、問題ない。


2.各工程ごとの、日数を求める。

その情報処理試験によると、工程は5つ

1.A+B+E+G
2.A+B+E+(ダミー)+H
3.A+C+F+H
4.A+C+D+E+G
5.A+C+D+E+(ダミー)+H

1で発生させた各工程の日数を、上記各工程に当てはめ、各工程の日数をもとめる


3.2で求めた各工程の最大値が、所要日数で、そのパスがクリティカルパス
  →これで1こ分もとまった。

4.あとは、1~3までの流れを、10000回とか繰り返すと、だいたいいいかんじになる。





■実際にやるには

Rでやる場合、上記のように三角分布を作らないといけない
ほかに、Oracle Crystal Ballというのがある。
(こんなところにも、手を出していたか、Oracle!)

日本では、構造計画研究所が扱っている

http://www4.kke.co.jp/cb/


このソフトを使って話をきいてきたんだけど、そのまえに、Oracle Crystal Ballの話
をしないといけなくて、それはちょっと長くなりそうなので、ここできる。

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

1月25日(水)のつぶやき

2012-01-26 03:33:15 | Twitter
13:06 from web
ジャクソン法のマイケルジャクソンの立場は(^^;)・・・「マイケル・ジャクソン」逮捕=すり容疑、同姓同名―モスクワ headlines.yahoo.co.jp/hl?a=20120125-…

by xmldtp on Twitter

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

NoSQLのMongoDBを立ち上げてみる

2012-01-25 16:21:13 | そのほか
 NoSQLの代表格の1つ、MongoDBも使ってみましょう。




■まずは、ダウンロード。

ここのサイト

http://www.mongodb.org/downloads

から、ダウンロードできます。こんなかんじ。

Windowsの32ビットのところを、クリックして、ダウンロード。
ZIPファイルがダウンロードできますので、それを解凍します





■インストール

ここ

MongoDB のインストール
http://keicode.com/db/mongodb-install.php

にインストール方法が書いてあります。

Cドライブ直下に、dataというフォルダを作成し、
その下に、dbというフォルダと、いまダウンロードして解凍したフォルダを
置くというものです。こんなかんじ。




■サーバー起動

ここ

MongoDB をコマンドラインクライアントで使う (基本編)
http://keicode.com/db/mongodb-basics.php

に詳しく書いてあるけど、

まず、
C:¥data¥mongodb-win32-i386-2.0.2¥bin
(¥は、全角で打っているけど、本当は半角)
の下にある、
  mongod.exe
をダブルクリックでもコマンドラインでもいいから起動する。
※注意:mongod dが付いているほう。(ついていないのは、クライアント)



■クライアント起動

コマンドラインを起動して、
cd C:¥data¥mongodb-win32-i386-2.0.2¥bin
(¥は、全角で打っているけど、本当は半角)
でmongoDBのbinにいったら、
mongo
でクライアントを起動したあと、さっきの、

MongoDB をコマンドラインクライアントで使う (基本編)
http://keicode.com/db/mongodb-basics.php

にあるように、

db.things.save({"first_name":"Keisuke","email":"dadosan@keicode.com"});
db.things.find();

を実行してみた。


なんか、ここまではできたみたい。


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

M2Mやライフログにおける、ビッグデータ処理としてのnode.jsとCassandra

2012-01-25 12:01:30 | そのほか
 M2Mという分野がある。
 マシン to マシンということで、主に、センサー情報をネットワークを介してコンピューターに渡し、(人間を介在させず)
直接処理するような話。

 遠隔操作や監視などに主に使われるが、予測などにも役立つと期待されている。
 ただし、センサ数を増やし、データ収集時間間隔を短くすると、データが大量になってしまう。いわゆるビッグデータ。





 一方、ライフログというのがある。
 これは昔からやられているけど、最近は、ケータイのGPSとかを使って、自動的に今いる位置を教えたりする。
 これらのデータと、その他のパーソナルデータが多量にとれれば、いろんなことに使えるかもしれないと期待されている。

 たとえば、

    六本木ヒルズと天王洲アイルに行く人の違いは?とか
    (ごめん、適当に書いた。比較としては、あまりよくないかも)

    埼玉に住んでいる人は、週末、どんなところからきているかとか

    各人の帰宅経路を推測し、
      その経路情報をいっせいにシミュレーションすることにより
    どこが壊れたら、帰宅困難になり、
      どこで、どうこまるかのシミュレーション

 とかとか、いろいろ考えられる。

 でも、これは、データを集める対象者を増やし、データ収集時間間隔を短くすると、
データが大量になってしまう。いわゆるビッグデータ。




 この2つのデータには、大きな特徴がある。
 それは、A(M2MならセンサA、ライフログならAさん)が出すデータは、
 Bがだすデータとは独立なことだ。
 いいかえると、AさんとBさんが、何らかの資源共有をする必要がない。

 ということは、トランザクション管理がいらないということだ。

 ってことは、Eventual Consistency(結果整合性)がとれれば、問題ないってことだ。この手のデータは・・・




 ただし、大量データなので、大量に処理できないといけない。
 ApacheなどではC10K問題(クライアント1万台問題)がおこってしまうかもしれない。
 じゃあ、node.js?

 CAP定理中、一貫性を常に保っていないといけないわけじゃない。
 上記のように、トランザクション管理がいらないとなると、かりに数分遅れでも、
 その時間までに、全部コミットが終わっていれば、その時間の状況は取れる。
 (センサーなどで、すぐに処理しないといけないものの場合は、そうじゃないかもしれないが)

 ということは、可用性+分断耐性+Eventual Consistency(結果整合性)っていうデータベースがいる?
 じゃあ、Cassandra?




 というわけで、ビックデータになるようなものは、トランザクションはいらないけど(データが独立、ないしは、データは送信前に確定している)大量に送信し、格納したいという要求が出てくる。

 そういった場合、node.jsとCassandraという組み合わせは、アリなのかもしれない。


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする