bl双性强迫侵犯h_国产在线观看人成激情视频_蜜芽188_被诱拐的少孩全彩啪啪漫画

如何進行SequoiaDB+JanusGraph的實踐-創新互聯

如何進行SequoiaDB + JanusGraph的實踐,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

成都創新互聯公司致力于互聯網網站建設與網站營銷,提供網站設計制作、成都網站制作、網站開發、seo優化、網站排名、互聯網營銷、成都小程序開發、公眾號商城、等建站開發,成都創新互聯公司網站建設策劃專家,為不同類型的客戶提供良好的互聯網應用定制解決方案,幫助客戶在新的全球化互聯網環境中保持優勢。

JanusGraph 

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

而看看圖數據庫里的老二 -- JanusGraph ,Apache 基金會頂級項目,頂著當年明星項目 Titan 的光環,繼續忍辱負重地前行。“這個孩子肯定有出息”,我就是這么想的。

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

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

如何進行SequoiaDB + JanusGraph的實踐

因為這種計算和存儲分離的架構,使得應用的開發者,完全不需要關注底層的數據分布式實現,只要專心做好自己的應用邏輯就好了。

當然,如果你是一名 DBA,那樣你還是要學習如何配置 SequoiaDB 底層的分布式存儲的。

前面也講到了,由于 JanusGraph 對底層存儲的設計和接口,都是根據列存儲來設計的,所以在為 SequoiaDB for JanusGraph 設計時,就需要做出一些調整。

首先是列簇里的 family 設計,我把它拆開來了,將不同的 family 直接對應成 SequoiaDB 的一個 Collection。

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

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

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

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

02

JanusGraph 代碼改造

在前面我向大家介紹 JanusGraph 如何識別不同的存儲產品的,所以要增加 SequoiaDB 數據庫這個存儲選項,首先需要 為StandardStoreManager 類增加 SequoiaDB 的選項,修改的部分如下:

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 的模塊,所以后續編譯后,應該將最新的 janusgraph-core jar 包替換舊的 jar 包。

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

<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>

對 JanusGraph 重新編譯:

最后將編譯好的 janusgraph-sequoiadb-0.4.0.jar 和 SequoiaDB 的 API 驅動 jar 包保存至 ${JANUSGRAPH_BINARY_HOME}/lib 目錄中,就完成了 JanusGraph 擴展 SequoiaDB 存儲的操作了。

03

JanusGraph 配置 SequoiaDB 作為存儲

大家將 janusgraph-sequoiadb 的模塊編譯出來的 jar 包和 SequoiaDB 的 JSON API jar 包一起放到 JunasGraph 的 lib 目錄里,同時更新 janusgraph-core 的 jar 包后,就完成了 JanusGraph 擴展 SequoiaDB 存儲的操作了。

為了讓 JanusGraph 能夠認識 SequoiaDB 的連接信息,大家還需要準備一個 config 文件。大家在 JunasGraph 的conf 目錄里增加一個 janusgraph-sequoiadb.properties的文件,內容大致如下:

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

我給大家介紹幾個重要的參數

  • storage.hostname,SequoiaDB coord 節點的 IP 地址,或者是 hostname

  • storage.port,SequoiaDB coord 節點的端口號

  • storage.username,如果 SequoiaDB 配置了鑒權,那樣就需要配置鑒權的用戶名

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

當我們已經將 SequoiaDB 的配置信息寫到了 config 文件里面了,那么 JanusGraph 對接 SequoiaDB 也是順利成章的事情。

大家可以直接打開 Gremlin 控制界面,然后就像平時使用 JanusGraph 那樣操作即可。

這里,我給大家準備了一下小 demo。

graph = JanusGraphFactory.open('conf/janusgraph-sequoiadb.properties');graph.addVertex("name", "aaa", "num", 123)g = graph.traversal()g.V().values('name')

關于如何進行SequoiaDB + JanusGraph的實踐問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注創新互聯-成都網站建設公司行業資訊頻道了解更多相關知識。

分享題目:如何進行SequoiaDB+JanusGraph的實踐-創新互聯
網頁URL:http://vcdvsql.cn/article46/isihg.html

成都網站建設公司_創新互聯,為您提供定制網站云服務器網站制作域名注冊手機網站建設做網站

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

商城網站建設