2012-03-15 43 views
4
存儲三元

我正在開發中Node.js一個應用程序,我有我的數據在三重的JSON表示,像這樣:在Node.js的

{ 
    subject:"Hello", 
    predicate:"Knows", 
    object:"World" 
} 

我希望能夠存儲我的數據以相對直接的方式進入[數據|三重]商店。

元組內的數據值也需要可搜索。

我在尋找使用現有的RDF服務器並通過HTTP訪問它,但想避免使用Sparql(一種解決方法可能是有一個單獨的JavaScript模塊,它圍繞Sparql)。

是否有任何現有的處理存儲三元組的節點模塊?如果不是,那麼存儲三元組的實用解決方案是什麼?

回答

2

如果您只需要通過密鑰(例如用戶ID)訪問數據,請使用Key-Value商店,如Redis,然後使用node_redis連接到該商店。

如果您需要對三元組中的數據執行搜索,請使用MongoDB並使用類似Mongoose的東西連接到它。

2

不可否認,我不知道任何經過優化的數據存儲區,用於存儲Node.js的三元組(三元組)。在不瞭解你正在解決的問題和相關領域的情況下,很難提供具體的建議。利用您提供的當前信息,對於每個三元組,我都會創建一個密鑰。然後根據您的要求選擇MongoDB(可能是一種矯枉過正),Redis(哈希或集合)或JavaScript關聯數組。

如果您正在尋找當中許多Node.js的客戶端的性能,然後使用Redis的與將工作出色的。

2

要開始,你的例子不是一個有效的RDF三元,所以如果你真的想要去瓦特/ RDF,你將必須與您的數據更嚴格。

說了這麼多,我知道有幾個選項,this框架在Javascript中實現了建議的RDF 接口標準。不知道你是否可以將它連接到現有的三重商店或什麼,但它可能適用於表示數據。 This library與jQuery一起提供一些RDF支持。最後是this library,它試圖在Javascript中成爲一個緊湊的RDF表示。

另一種選擇是RDF/JSON LD spec這與其JSON表示十分適合在JavaScript中使用。

1

我剛剛作出了一個非常輕量級的JS框架,不正是你想要的:

https://www.npmjs.com/package/hexastore

添加三元:

mydb.putAll([ 
    ["hexastore","is","nice"], 
    ["hexastore","speed","fast"], 
    ["javascript","is","nice"] 
]); 

查詢三元組:

var result = db.search([ 
    [["what"],"is","nice"] 
]); 
// result == [{what:hexastore},{what:javascript}]