<dfn id="hx5t3"><strike id="hx5t3"><em id="hx5t3"></em></strike></dfn>

    <thead id="hx5t3"></thead><nobr id="hx5t3"><font id="hx5t3"><rp id="hx5t3"></rp></font></nobr>

    <listing id="hx5t3"></listing>

    <var id="hx5t3"></var>
    <big id="hx5t3"></big>

      
      

      <output id="hx5t3"><ruby id="hx5t3"></ruby></output>
      <menuitem id="hx5t3"><dfn id="hx5t3"></dfn></menuitem>

      <big id="hx5t3"></big>

        UniqueSugar

        UniqueSugar 查看完整檔案

        杭州編輯上海交通大學  |  核科學與技術 編輯浙江智臾科技  |  技術支持 編輯 dolphindb.cn 編輯
        編輯

        金融、物聯網領域的大數據存儲、查詢和計算

        個人動態

        UniqueSugar 關注了專欄 · 2月27日

        京東科技技術新知

        京東智聯云最新產品信息和技術干貨以及最新活動發布 擁抱技術,與開發者攜手創造未來!

        關注 3882

        UniqueSugar 回答了問題 · 2月22日

        解決請問取指定時間前N條記錄有沒有高效的辦法?

        可以使用limit子句,示例代碼如下:

        sym = `C`MS`MS`MS`IBM`IBM`C`C`C $ SYMBOL
        price= 49.6 29.46 29.52 30.02 174.97 175.23 50.76 50.32 51.29
        qty = 2200 1900 2100 3200 6800 5400 1300 2500 8800
        timestamp = [09:34:07, 09:36:42, 09:36:51, 09:36:59, 09:32:47, 09:35:26, 09:34:16, 09:34:26, 09:38:12]
        t = table(timestamp, sym, qty, price);
        
        select * from t where timestamp<09:36:00 context by sym limit -2;

        結果如下:

        image

        關注 2 回答 1

        UniqueSugar 贊了文章 · 2月22日

        技術干貨丨時序數據庫DolphinDB高可用設計及部署教程

        DolphinDB提供數據、元數據以及客戶端的高可用方案,使得數據庫節點發生故障時,數據庫依然可以正常運作,保證業務不會中斷。

        與其它時序數據庫不同的是,DolphinDB的高可用確保強一致性。

        1. 概述

        DolphinDB database采用多副本機制,相同數據塊的副本存儲在不同的數據節點上。即使集群中某個或多個數據節點宕機,只要集群中還有至少1個副本可用,那么數據庫就可以提供服務。

        元數據存儲在控制節點上。為了保證元數據的高可用,DolphinDB采用Raft協議,通過構建多個控制節點來組成一個Raft組,只要宕機的控制節點少于半數,集群仍然可提供服務。

        DolphinDB API提供了自動重連和切換機制,如果當前連接的數據節點宕機,API會嘗試重連,若重連失敗就會自動切換連接到其他數據節點執行任務。切換數據節點對用戶是透明的,用戶不會感知到當前連接的節點已經切換。

        如果要使用高可用功能,請先部署DolphinDB集群。高可用功能僅在集群中支持,在單實例中不支持。集群部署請參考多服務器集群部署教程。

        1. 數據高可用

        為了保證數據的安全和高可用,DolphinDB支持在不同的服務器上存儲多個數據副本,并且數據副本之間保持強一致性。即使一臺機器上的數據損壞,也可以通過訪問其他機器上的副本數據來保證數據服務不中斷。

        副本的個數可由在controller.cfg中的dfsReplicationFactor參數來設定。例如,把副本數設置為2:

        dfsReplicationFactor=2

        默認情況下,DolphinDB允許相同數據塊的副本分布在同一臺機器上。為了保證數據高可用,需要把相同數據塊的副本分布在不同的機器上??稍赾ontroller.cfg添加以下配置項:

        dfsReplicaReliabilityLevel=1

        下面通過一個例子直觀地解釋DolphinDB的數據高可用。首先,在集群的數據節點上執行以下腳本以創建數據庫:

        n=1000000
        date=rand(2018.08.01..2018.08.03,n)
        sym=rand(`AAPL`MS`C`YHOO,n)
        qty=rand(1..1000,n)
        price=rand(100.0,n)
        t=table(date,sym,qty,price)
        if(existsDatabase("dfs://db1")){
            dropDatabase("dfs://db1")
        }
        db=database("dfs://db1",VALUE,2018.08.01..2018.08.03)
        trades=db.createPartitionedTable(t,`trades,`date).append!(t)

        分布式表trades被分成3個分區,每個日期表示一個分區。DolphinDB的Web集群管理界面提供了DFS Explorer,可以方便地查看數據分布情況。trades表各個分區的分布情況如下圖所示:

        以20180801這個分區為例,Sites列顯示,date=2018.08.01的數據分布在18104datanode和18103datanode上。即使18104datanode宕機,只要18103datanode正常,用戶仍然對date=2018.08.01的數據進行讀寫操作。

        1. 元數據高可用

        數據存儲時會產生元數據,例如每個數據塊存儲在哪些數據節點上的哪個位置等信息。如果元數據不能使用,即使數據塊完整,系統也無法正常訪問數據。

        元數據存放在控制節點。我們可以在一個集群中部署多個控制節點,通過元數據冗余來保證元數據服務不中斷。一個集群中的所有控制節點組成一個Raft組,Raft組中只有一個Leader,其他都是Follower,Leader和Follower上的元數據保持強一致性。數據節點只能和Leader進行交互。如果當前Leader不可用,系統會立即選舉出新的Leader來提供元數據服務。Raft組能夠容忍小于半數的控制節點宕機,例如包含三個控制節點的集群,可以容忍一個控制節點出現故障;包含五個控制節點的集群,可以容忍兩個控制節點出現故障。要設置元數據高可用,控制節點的數量至少為3個,同時需要設置數據高可用,即副本數必須大于1。

        通過以下例子來介紹如何要為一個已有的集群啟動元數據高可用。假設已有集群的控制節點位于P1機器上,現在要增加兩個控制節點,分別部署在P2、P3機器上。它們的內網地址如下:

        P1: 10.1.1.1
        P2: 10.1.1.3
        P3: 10.1.1.5

        (1) 修改已有控制節點的配置文件

        在P1的controller.cfg文件添加下列參數:dfsReplicationFactor=2, dfsReplicaReliabilityLevel=1, dfsHAMode=Raft。修改后的controller.cfg如下:

        localSite=10.1.1.1:8900:controller1
        dfsReplicationFactor=2
        dfsReplicaReliabilityLevel=1
        dfsHAMode=Raft

        (2) 部署兩個新的控制節點

        分別在P2、P3下載DolphinDB服務器程序包,并解壓,例如解壓到/DolphinDB目錄。

        在/DolphinDB/server目錄下創建config目錄。在config目錄下創建controller.cfg文件,填寫以下內容:

        P2

        localSite=10.1.1.3:8900:controller2
        dfsReplicationFactor=2
        dfsReplicaReliabilityLevel=1
        dfsHAMode=Raft

        P3

        localSite=10.1.1.5:8900:controller3
        dfsReplicationFactor=2
        dfsReplicaReliabilityLevel=1
        dfsHAMode=Raft

        (3) 修改已有代理節點的配置文件

        在已有的agent.cfg文件中添加sites參數,它表示本機器代理節點和所有控制節點的局域網信息,代理節點信息必須在所有控制節點信息之前。例如,P1的agent.cfg修改后的內容如下:

        localSite=10.1.1.1:8901:agent1
        controllerSite=10.1.1.1:8900:controller1
        sites=10.1.1.1:8901:agent1:agent,10.1.1.1:8900:controller1:controller,10.1.1.3:8900:controller2:controller,10.1.1.5:8900:controller3:controller

        如果有多個代理節點,每個代理節點的配置文件都需要修改。

        (4) 修改已有控制節點的集群成員配置文件

        在P1的cluster.nodes上增加控制節點的局域網信息。例如,P1的cluster.nodes修改后的內容如下:

        localSite,mode
        10.1.1.1:8900:controller1,controller
        10.1.1.2:8900:controller2,controller
        10.1.1.3:8900:controller3,controller
        10.1.1.1:8901:agent1,agent
        10.1.1.1:8911:datanode1,datanode
        10.1.1.1:8912:datanode2,datanode

        (5) 為新的控制節點添加集群成員配置文件和節點配置文件

        控制節點的啟動需要cluster.nodes和cluster.cfg。把P1上的cluster.nodes和cluster.cfg復制到P2和P3的config目錄。

        (6) 啟動高可用集群

        • 啟動控制節點

        分別在每個控制節點所在機器上執行以下命令:

        nohup ./dolphindb -console 0 -mode controller -home data -config config/controller.cfg -clusterConfig config/cluster.cfg -logFile log/controller.log -nodesFile config/cluster.nodes &
        • 啟動代理節點

        在部署了代理節點的機器上執行以下命令:

        nohup ./dolphindb -console 0 -mode agent -home data -config config/agent.cfg -logFile log/agent.log &

        啟動、關閉數據節點以及修改節點配置只能在Leader的集群管理界面操作。

        • 如何判斷哪個控制節點為Leader

        在瀏覽器地址欄中輸入任意控制節點的IP地址和端口號打開集群管理界面,例如10.1.1.1:8900,點擊Node列的控制節點別名controller1進入DolphinDB Notebook。

        執行getActiveMaster()函數,該函數返回Leader的別名。

        在瀏覽器地址欄中輸入Leader的IP地址和端口號打開Leader的集群管理界面。

        1. 客戶端高可用

        使用API與DolphinDB server的數據節點進行交互時,如果連接的數據節點宕機,API會嘗試重連,若重連失敗會自動切換到其他可用的數據節點。這對用戶是透明的。目前只有Java和Python API支持高可用。

        API的connect方法如下:

        connect(host,port,username,password,startup,highAvailability)

        使用connect方法連接數據節點時,只需要指定highAvailability參數為true。

        以下例子設置Java API高可用:

        import com.xxdb;
        DBConnection conn = new DBConnection();
        boolean success = conn.connect("10.1.1.1", 8911,"admin","123456","",true);

        如果數據節點10.1.1.1:8911宕機,API會自動連接到其他可用的數據節點。

        1. 動態增加數據節點

        用戶可以使用addNode命令在線增加數據節點,無需重啟集群。

        下例中說明如何在新的服務器P4(內網IP為10.1.1.7)上增加新的數據節點datanode3,端口號為8911。

        在新的物理服務器上增加數據節點,需要先部署一個代理節點,用于啟動該服務器上的數據節點。P4的代理節點的端口為8901,別名為agent2。

        在P4上下載DolphinDB程序包,解壓到指定目錄,例如/DolphinDB。

        進入到/DolphinDB/server目錄,創建config目錄。

        在config目錄下創建agent.cfg文件,填寫如下內容:

        localSite=10.1.1.7:8901:agent2
        controllerSite=10.1.1.1:8900:controller1
        sites=10.1.1.7:8901:agent2:agent,10.1.1.1:8900:controller1:controller,10.1.1.3:8900:controller2:controller,10.1.1.5:8900:controller3:controller

        在config目錄下創建cluster.nodes文件,填寫如下內容:

        localSite,mode
        10.1.1.1:8900:controller1,controller
        10.1.1.2:8900:controller2,controller
        10.1.1.3:8900:controller3,controller
        10.1.1.1:8901:agent1,agent
        10.1.1.7:8901:agent2,agent
        10.1.1.1:8911:datanode1,datanode
        10.1.1.1:8912:datanode2,datanode

        把P1, P2和P3上的cluster.nodes修改為與P4的cluster.nodes相同。

        執行以下Linux命令啟動P4上的代理節點:

        nohup ./dolphindb -console 0 -mode agent -home data -config config/agent.cfg -logFile log/agent.log &

        在任意一個數據節點上執行以下命令:

        addNode("10.1.1.7",8911,"datanode3")

        執行上面的腳本后,刷新Web集群管理界面,可以發現新增加的數據節點已經存在,但它處于關閉狀態,需要手動啟動新增的數據節點。

        1. 總結

        通過保證數據、元數據服務以及API連接不中斷,DolphinDB可以滿足物聯網、金融等領域24小時不中斷提供服務的需求。

        查看原文

        贊 1 收藏 0 評論 0

        UniqueSugar 贊了問題 · 2月22日

        解決DolphinDB中的數據同步應該怎么做?

        現在有兩臺數據服務器,當其中一臺的數據更新后,要將另一臺手動或自動的同步,應該怎么做?

        關注 2 回答 1

        UniqueSugar 贊了問題 · 2月22日

        解決請問dolphindb有何去除重復保存股票數據的方案?

        目標:保存的歷史數據不能有重復,由于保存1分鐘數據量龐大,我現在只保存5分鐘時段,再由5分鐘時段OHLC轉各時段數據。

        問題:例如現在是9:42時,流數據表用keyedStreamTable即時下載保存數據,此刻的5分鐘K線其實是9:42時這時刻數據,不是9:45的最終數據,如果此時寫庫入后,到真正9:45時時就保存不了,因為keyedStreamTable已將9.42時的數據當9.45寫入,不可更新。我的目標是像keyedTable一樣,同一個5分鐘時段寫N次,都能保存最新最后的數據。

        請問應該如何實現?

        關注 2 回答 1

        UniqueSugar 贊了問題 · 2月22日

        解決請問取指定時間前N條記錄有沒有高效的辦法?

        請問取指定時間前N條有沒有高效的辦法?
        目前的方法是先倒序top,取到數據后再排序。

        關注 2 回答 1

        UniqueSugar 回答了問題 · 2月22日

        解決DolphinDB中的數據同步應該怎么做?

        可以參考官網的教程:DolphinDB 集群間數據庫同步
        網址為:https://gitee.com/dolphindb/T...

        關注 2 回答 1

        UniqueSugar 回答了問題 · 2月22日

        解決請問dolphindb有何去除重復保存股票數據的方案?

        可以使用createTimeSeriesAggregator創建流數據時序聚合引擎,啟用updateTime參數。
        updateTime參數類型是整型,如果沒有指定updateTime,一個數據窗口結束前,不會發生對該數據窗口數據的計算。若要求在當前窗口結束前對當前窗口已有數據進行計算,可指定updateTime。step必須是updateTime的整數倍。要設置updateTime,useSystemTime必須設為false。
        具體的參考教程:https://gitee.com/dolphindb/T...

        關注 2 回答 1

        UniqueSugar 贊了問題 · 2月19日

        解決dolphindb計算高頻因子的時候結果出現()是怎么回事?

        在使用dolphindb計算某天的高頻因子時,結果出現了()是怎么回事?
        結果如下圖所示:

        image

        關注 2 回答 1

        UniqueSugar 回答了問題 · 2月19日

        解決dolphindb計算高頻因子的時候結果出現()是怎么回事?

        結果中的帶括號的數據表示負數。

        關注 2 回答 1

        認證與成就

        • 獲得 240 次點贊
        • 獲得 12 枚徽章 獲得 0 枚金徽章, 獲得 0 枚銀徽章, 獲得 12 枚銅徽章

        擅長技能
        編輯

        開源項目 & 著作
        編輯

        (??? )
        暫時沒有

        注冊于 2020-10-04
        個人主頁被 2.6k 人瀏覽

        一本到在线是免费观看_亚洲2020天天堂在线观看_国产欧美亚洲精品第一页_最好看的2018中文字幕