如何進(jìn)行SequoiaDB + JanusGraph的實(shí)踐,針對(duì)這個(gè)問(wèn)題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問(wèn)題的小伙伴找到更簡(jiǎn)單易行的方法。
成都創(chuàng)新互聯(lián)公司致力于互聯(lián)網(wǎng)網(wǎng)站建設(shè)與網(wǎng)站營(yíng)銷(xiāo),提供網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站制作、網(wǎng)站開(kāi)發(fā)、seo優(yōu)化、網(wǎng)站排名、互聯(lián)網(wǎng)營(yíng)銷(xiāo)、成都小程序開(kāi)發(fā)、公眾號(hào)商城、等建站開(kāi)發(fā),成都創(chuàng)新互聯(lián)公司網(wǎng)站建設(shè)策劃專(zhuān)家,為不同類(lèi)型的客戶(hù)提供良好的互聯(lián)網(wǎng)應(yīng)用定制解決方案,幫助客戶(hù)在新的全球化互聯(lián)網(wǎng)環(huán)境中保持優(yōu)勢(shì)。JanusGraph
實(shí)際上,在圖數(shù)據(jù)領(lǐng)域里,Neo4j 才是真正處于統(tǒng)治地位的,但是無(wú)奈它的社區(qū)版本,性能“限(yan)制(ge)”得太過(guò)分了,功能也是各種被砍,難以使用在生產(chǎn)環(huán)境里。至于企業(yè)版,目前也沒(méi)有專(zhuān)門(mén)的預(yù)算給到這塊的需求。
而看看圖數(shù)據(jù)庫(kù)里的老二 -- JanusGraph ,Apache 基金會(huì)頂級(jí)項(xiàng)目,頂著當(dāng)年明星項(xiàng)目 Titan 的光環(huán),繼續(xù)忍辱負(fù)重地前行?!斑@個(gè)孩子肯定有出息”,我就是這么想的。
如果大家好奇 JanusGraph 的前世今生,可以扒一扒 DataStax(Cassandra 母公司)對(duì) Titan 干了啥。然后一群熱愛(ài)開(kāi)源,又相當(dāng)牛叉的程序猿就獨(dú)立單干了。反正這個(gè)故事聽(tīng)起來(lái),和當(dāng)年 MySQL 和 MariaDB 相愛(ài)相殺的故事差不多,只是 JanusGraph 的下場(chǎng)更加壯烈。
我從 JanusGraph 的官網(wǎng)里找了一個(gè)整體的架構(gòu)圖,大家可以看到 JanusGraph 的模塊還是挺豐富的,功能也是比較的全面。
因?yàn)檫@種計(jì)算和存儲(chǔ)分離的架構(gòu),使得應(yīng)用的開(kāi)發(fā)者,完全不需要關(guān)注底層的數(shù)據(jù)分布式實(shí)現(xiàn),只要專(zhuān)心做好自己的應(yīng)用邏輯就好了。
當(dāng)然,如果你是一名 DBA,那樣你還是要學(xué)習(xí)如何配置 SequoiaDB 底層的分布式存儲(chǔ)的。
前面也講到了,由于 JanusGraph 對(duì)底層存儲(chǔ)的設(shè)計(jì)和接口,都是根據(jù)列存儲(chǔ)來(lái)設(shè)計(jì)的,所以在為 SequoiaDB for JanusGraph 設(shè)計(jì)時(shí),就需要做出一些調(diào)整。
首先是列簇里的 family 設(shè)計(jì),我把它拆開(kāi)來(lái)了,將不同的 family 直接對(duì)應(yīng)成 SequoiaDB 的一個(gè) Collection。
最開(kāi)始時(shí)候,我是希望將一條記錄的所有列都保存到 SequoiaDB 一個(gè) BSON 里面,但是寫(xiě)到后面,由于 JanusGraph 會(huì)依賴(lài) HBase 的列排序功能返回記錄,所以這個(gè)在 SequoiaDB 里面無(wú)法對(duì)一條記錄的不同列進(jìn)行排序。所以在最后, JanusGraph 中的一條記錄被我拆分成多個(gè) BSON 記錄,形式變成了以下的形式。記錄以 RowKey 來(lái)維護(hù)其一條記錄的完整性。
{RowKey:"", Key:"", Value:""}{RowKey:"", Key:"", Value:""}{RowKey:"", Key:"", Value:""}{RowKey:"", Key:"", Value:""}
在 BSON 中,RowKey、Key和Value 三個(gè)字段的數(shù)據(jù)類(lèi)型都是 Binary 格式,這個(gè)也是 JanusGraph 自己所獨(dú)有的解析方法。JanusGraph 保存于 SequoiaDB 中的記錄如下面的例子:
{ "_id": { "$oid": "5e410c444f025855e5552b4c" }, "Key": { "$binary": "///////+x38ABZ40DXrgsGMwYTgxZmZiMTc2ODYtY2hlbjE=", "$type": "0" }, "RowKey": { "$binary": "AAAAAAAAAAM=", "$type": "0" }, "Value": { "$binary": "", "$type": "0" }}
02
JanusGraph 代碼改造
BDB_JE("org.janusgraph.diskstorage.berkeleyje.BerkeleyJEStoreManager", "berkeleyje"),CASSANDRA_THRIFT("org.janusgraph.diskstorage.cassandra.thrift.CassandraThriftStoreManager", "cassandrathrift"),CASSANDRA_ASTYANAX("org.janusgraph.diskstorage.cassandra.astyanax.AstyanaxStoreManager", ImmutableList.of("cassandra", "astyanax")),CASSANDRA_EMBEDDED("org.janusgraph.diskstorage.cassandra.embedded.CassandraEmbeddedStoreManager", "embeddedcassandra"),CQL("org.janusgraph.diskstorage.cql.CQLStoreManager", "cql"),HBASE("org.janusgraph.diskstorage.hbase.HBaseStoreManager", "hbase"),IN_MEMORY("org.janusgraph.diskstorage.keycolumnvalue.inmemory.InMemoryStoreManager", "inmemory"),SEQUOIADB("org.janusgraph.diskstorage.sequoiadb.SequoiadbStoreManager", "sequoiadb");
StandardStoreManager 類(lèi)是屬于 janusgraph-cord 的模塊,所以后續(xù)編譯后,應(yīng)該將最新的 janusgraph-core jar 包替換舊的 jar 包。
然后大家只要從 github 上下載 SequoiaDB for JanusGraph 的項(xiàng)目,將其放到 JanusGraph 源碼的根目錄,修改 maven 的pom.xml 編譯腳本,增加 SequoiaDB 的驅(qū)動(dòng)版本說(shuō)明和添加編譯 SequoiaDB for JanusGraph 的項(xiàng)目編譯。
<titan.compatible-versions>1.0.0,1.1.0-SNAPSHOT</titan.compatible-versions> … <httpcomponents.version>4.4.1</httpcomponents.version> <hadoop2.version>2.7.7</hadoop2.version> <hbase1.version>1.4.10</hbase1.version> <hbase2.version>2.1.5</hbase2.version> <hbase.server.version>1.4.10</hbase.server.version> <sequoiadb.version>3.2.1</sequoiadb.version> ... <modules> … <module>janusgraph-doc</module> <module>janusgraph-solr</module> <module>janusgraph-examples</module> <module>janusgraph-sequoiadb</module> </modules>
對(duì) JanusGraph 重新編譯:
最后將編譯好的 janusgraph-sequoiadb-0.4.0.jar 和 SequoiaDB 的 API 驅(qū)動(dòng) jar 包保存至 ${JANUSGRAPH_BINARY_HOME}/lib 目錄中,就完成了 JanusGraph 擴(kuò)展 SequoiaDB 存儲(chǔ)的操作了。
03
JanusGraph 配置 SequoiaDB 作為存儲(chǔ)
大家將 janusgraph-sequoiadb 的模塊編譯出來(lái)的 jar 包和 SequoiaDB 的 JSON API jar 包一起放到 JunasGraph 的 lib 目錄里,同時(shí)更新 janusgraph-core 的 jar 包后,就完成了 JanusGraph 擴(kuò)展 SequoiaDB 存儲(chǔ)的操作了。
為了讓 JanusGraph 能夠認(rèn)識(shí) SequoiaDB 的連接信息,大家還需要準(zhǔn)備一個(gè) config 文件。大家在 JunasGraph 的conf 目錄里增加一個(gè) janusgraph-sequoiadb.properties的文件,內(nèi)容大致如下:
gremlin.graph=org.janusgraph.core.JanusGraphFactorystorage.backend=sequoiadbstorage.hostname=10.211.55.7storage.port=11810#storage.username=sdbadmin#storage.password=sdbadminstorage.meta.visibility = truecache.db-cache = falsecache.db-cache-clean-wait = 20cache.db-cache-time = 180000cache.db-cache-size = 0.5
我給大家介紹幾個(gè)重要的參數(shù)
storage.hostname,SequoiaDB coord 節(jié)點(diǎn)的 IP 地址,或者是 hostname
storage.port,SequoiaDB coord 節(jié)點(diǎn)的端口號(hào)
storage.username,如果 SequoiaDB 配置了鑒權(quán),那樣就需要配置鑒權(quán)的用戶(hù)名
storage.password,如果 SequoiaDB 配置了鑒權(quán),那樣就需要配置鑒權(quán)的密碼
當(dāng)我們已經(jīng)將 SequoiaDB 的配置信息寫(xiě)到了 config 文件里面了,那么 JanusGraph 對(duì)接 SequoiaDB 也是順利成章的事情。
大家可以直接打開(kāi) Gremlin 控制界面,然后就像平時(shí)使用 JanusGraph 那樣操作即可。
這里,我給大家準(zhǔn)備了一下小 demo。
graph = JanusGraphFactory.open('conf/janusgraph-sequoiadb.properties');graph.addVertex("name", "aaa", "num", 123)g = graph.traversal()g.V().values('name')
關(guān)于如何進(jìn)行SequoiaDB + JanusGraph的實(shí)踐問(wèn)題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒(méi)有解開(kāi),可以關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道了解更多相關(guān)知識(shí)。
分享題目:如何進(jìn)行SequoiaDB+JanusGraph的實(shí)踐-創(chuàng)新互聯(lián)
網(wǎng)頁(yè)URL:http://jinyejixie.com/article46/isihg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制網(wǎng)站、云服務(wù)器、網(wǎng)站制作、域名注冊(cè)、手機(jī)網(wǎng)站建設(shè)、做網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容