真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

如何進(jìn)行SequoiaDB+JanusGraph的實(shí)踐-創(chuàng)新互聯(lián)

如何進(jìn)行SequoiaDB + JanusGraph的實(shí)踐,針對(duì)這個(gè)問題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問題的小伙伴找到更簡(jiǎn)單易行的方法。

成都創(chuàng)新互聯(lián)公司致力于互聯(lián)網(wǎng)網(wǎng)站建設(shè)與網(wǎng)站營銷,提供網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站制作、網(wǎng)站開發(fā)、seo優(yōu)化、網(wǎng)站排名、互聯(lián)網(wǎng)營銷、成都小程序開發(fā)、公眾號(hào)商城、等建站開發(fā),成都創(chuàng)新互聯(lián)公司網(wǎng)站建設(shè)策劃專家,為不同類型的客戶提供良好的互聯(lián)網(wǎng)應(yīng)用定制解決方案,幫助客戶在新的全球化互聯(lián)網(wǎng)環(huán)境中保持優(yōu)勢(shì)。

JanusGraph 

實(shí)際上,在圖數(shù)據(jù)領(lǐng)域里,Neo4j 才是真正處于統(tǒng)治地位的,但是無奈它的社區(qū)版本,性能“限(yan)制(ge)”得太過分了,功能也是各種被砍,難以使用在生產(chǎn)環(huán)境里。至于企業(yè)版,目前也沒有專門的預(yù)算給到這塊的需求。

而看看圖數(shù)據(jù)庫里的老二 -- JanusGraph ,Apache 基金會(huì)頂級(jí)項(xiàng)目,頂著當(dāng)年明星項(xiàng)目 Titan 的光環(huán),繼續(xù)忍辱負(fù)重地前行?!斑@個(gè)孩子肯定有出息”,我就是這么想的。

如果大家好奇 JanusGraph 的前世今生,可以扒一扒 DataStax(Cassandra 母公司)對(duì) Titan 干了啥。然后一群熱愛開源,又相當(dāng)牛叉的程序猿就獨(dú)立單干了。反正這個(gè)故事聽起來,和當(dāng)年 MySQL 和 MariaDB 相愛相殺的故事差不多,只是 JanusGraph 的下場(chǎng)更加壯烈。

我從 JanusGraph 的官網(wǎng)里找了一個(gè)整體的架構(gòu)圖,大家可以看到 JanusGraph 的模塊還是挺豐富的,功能也是比較的全面。

如何進(jìn)行SequoiaDB + JanusGraph的實(shí)踐

因?yàn)檫@種計(jì)算和存儲(chǔ)分離的架構(gòu),使得應(yīng)用的開發(fā)者,完全不需要關(guān)注底層的數(shù)據(jù)分布式實(shí)現(xiàn),只要專心做好自己的應(yīng)用邏輯就好了。

當(dāng)然,如果你是一名 DBA,那樣你還是要學(xué)習(xí)如何配置 SequoiaDB 底層的分布式存儲(chǔ)的。

前面也講到了,由于 JanusGraph 對(duì)底層存儲(chǔ)的設(shè)計(jì)和接口,都是根據(jù)列存儲(chǔ)來設(shè)計(jì)的,所以在為 SequoiaDB for JanusGraph 設(shè)計(jì)時(shí),就需要做出一些調(diào)整。

首先是列簇里的 family 設(shè)計(jì),我把它拆開來了,將不同的 family 直接對(duì)應(yīng)成 SequoiaDB 的一個(gè) Collection。

最開始時(shí)候,我是希望將一條記錄的所有列都保存到 SequoiaDB 一個(gè) BSON 里面,但是寫到后面,由于 JanusGraph 會(huì)依賴 HBase 的列排序功能返回記錄,所以這個(gè)在 SequoiaDB 里面無法對(duì)一條記錄的不同列進(jìn)行排序。所以在最后, JanusGraph 中的一條記錄被我拆分成多個(gè) BSON 記錄,形式變成了以下的形式。記錄以 RowKey 來維護(hù)其一條記錄的完整性。

{RowKey:"", Key:"", Value:""}{RowKey:"", Key:"", Value:""}{RowKey:"", Key:"", Value:""}{RowKey:"", Key:"", Value:""}

在 BSON 中,RowKey、Key和Value 三個(gè)字段的數(shù)據(jù)類型都是 Binary 格式,這個(gè)也是 JanusGraph 自己所獨(dú)有的解析方法。JanusGraph 保存于 SequoiaDB 中的記錄如下面的例子:

{  "_id": {    "$oid": "5e410c444f025855e5552b4c"  },  "Key": {    "$binary": "http:///////+x38ABZ40DXrgsGMwYTgxZmZiMTc2ODYtY2hlbjE=",    "$type": "0"  },  "RowKey": {    "$binary": "AAAAAAAAAAM=",    "$type": "0"  },  "Value": {    "$binary": "",    "$type": "0"  }}

02

JanusGraph 代碼改造

在前面我向大家介紹 JanusGraph 如何識(shí)別不同的存儲(chǔ)產(chǎn)品的,所以要增加 SequoiaDB 數(shù)據(jù)庫這個(gè)存儲(chǔ)選項(xiàng),首先需要 為StandardStoreManager 類增加 SequoiaDB 的選項(xiàng),修改的部分如下:

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 類是屬于 janusgraph-cord 的模塊,所以后續(xù)編譯后,應(yīng)該將最新的 janusgraph-core jar 包替換舊的 jar 包。

然后大家只要從 github 上下載 SequoiaDB for JanusGraph 的項(xiàng)目,將其放到 JanusGraph 源碼的根目錄,修改 maven 的pom.xml 編譯腳本,增加 SequoiaDB 的驅(qū)動(dòng)版本說明和添加編譯 SequoiaDB for JanusGraph 的項(xiàng)目編譯。

1.0.0,1.1.0-SNAPSHOT        …        4.4.1        2.7.7        1.4.10        2.1.5        1.4.10        3.2.1        ...            …        janusgraph-doc        janusgraph-solr        janusgraph-examples        janusgraph-sequoiadb    

對(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 的模塊編譯出來的 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)的用戶名

  • storage.password,如果 SequoiaDB 配置了鑒權(quán),那樣就需要配置鑒權(quán)的密碼

當(dāng)我們已經(jīng)將 SequoiaDB 的配置信息寫到了 config 文件里面了,那么 JanusGraph 對(duì)接 SequoiaDB 也是順利成章的事情。

大家可以直接打開 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í)踐問題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道了解更多相關(guān)知識(shí)。


本文標(biāo)題:如何進(jìn)行SequoiaDB+JanusGraph的實(shí)踐-創(chuàng)新互聯(lián)
轉(zhuǎn)載來于:http://weahome.cn/article/isihg.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部