27. WebUI:検討した仕様
• ① MVC + MongoDB → Ming
• ② node.js + MongoDB → Mongoose
• ③ REST Interface + MongoDB →
sleepy.mongoose
28. WebUI:検討した仕様
• ①:[MVC + Mongo]
‣ Djangoで実装
‣ スキーマを(ある程度)定義。Validation機能便利。
MongoDBとDjangoをシームレスに扱えるツールが充実:
‣ Python:pymongo
‣ Django :MongoEngine、Ming、MongoKit、Django-nonrel
‣ 参考になるページ
‣ Django and NoSQL, any ready-to-use library?
‣ Which Python API should be used with Mongo DB and Django
‣ MongoDB hearts Django? (Django NYC)
29. • [例] スキーマの使用例
node.js+MongoDB
from ming.datastore import DataStore
from ming import Session
from ming import Document, Field, schema
bind = DataStore('mongo://localhost:30000/playshop')
session = Session(bind)
class UserTrace(Document):
class __mongometa__:
session = session
name = ’user_trace’
_id = Field(schema.ObjectId)
userId = Field(str)
actionType = Field(str)
…
#trace.py として保存
31. WebUI:検討した仕様
• ②:[node.js + Mongo]
‣ サーバサド Java Script
‣ クラゕントのリクエストをサーバー側で実行して結果を返す
‣ Mongoose は数種ある中で代表的なサーバサドJSラブラリ。
‣ Node.js 内で動くJava Script Library
‣ 未実装部分もあるが、十分使える
‣ Hummingbird がMongoDB+node.jsを使用した実例
‣ 参考になるページ
‣ Node.js and MongoDB
‣ node.js + express + mongodb + mongoose を試してみた
‣ Real time ecommerce analytics with MongoDB at Gilt Groupe
32. • [例] もっとも簡単な例
node.js+MongoDB
var mongoose = require('mongoose/').Mongoose,
db = mongoose.connect('mongodb://localhost/playshop'),
Collection = mongoose.noSchema(’user_trace',db);
Collection.find({‘date’:’2010-11-10’}).each(function(doc){
// do something
});
33. • [例] Modelを利用した例
node.js+MongoDB
var mongoose = require('mongoose/').Mongoose,
db = mongoose.connect('mongodb://localhost/playshop');
mongoose.load('./models/');
User = mongoose.get(’UserRegistration',db);
var user = new User({userId :’7777', totalCharge : 10000, …});
user.lastLogin = ‘2010-11-10’; // change a key value
user.save()
User.find({‘date’:’2010-11-10’}).each(function(user){
// do something…
});
62. GraphDB:Neo4j
• [pythonでのサンプル]:
//Create node:
> n = graphdb.node()
> n = graphdb.node(color="Red", widht=16, height=32)
//Accessing node by id:
> n17 = graphdb.node[14]
// Accessing properties:
> value = e['key'] # get property value
> e['key'] = value # set property value
> del e['key'] # remove property value
// Create relationship:
> n1.Knows(n2)
//Specify properties for new relationships:
> n1.Knows(n2, since=123456789,
introduced_at="Christmas party”)