成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

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

如何進(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 的模塊還是挺豐富的,功能也是比較的全面。

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

因?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 代碼改造

在前面我向大家介紹 JanusGraph 如何識(shí)別不同的存儲(chǔ)產(chǎn)品的,所以要增加 SequoiaDB 數(shù)據(jù)庫(kù)這個(gè)存儲(chǔ)選項(xiàng),首先需要 為StandardStoreManager 類(lèi)增加 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 類(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)

商城網(wǎng)站建設(shè)
绍兴县| 麟游县| 五指山市| 江西省| 德昌县| 汉源县| 信阳市| 象山县| 永宁县| 离岛区| 伊春市| 麦盖提县| 靖边县| 隆回县| 永年县| 汉寿县| 荔波县| 藁城市| 萝北县| 寻乌县| 长宁区| 清流县| 阿城市| 乾安县| 阿城市| 宁夏| 横峰县| 开阳县| 永仁县| 贵南县| 长顺县| 天镇县| 视频| 辰溪县| 桓仁| 邵阳市| 阿拉善右旗| 图们市| 玛多县| 大化| 密山市|