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

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

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でシェアする