操屁眼的视频在线免费看,日本在线综合一区二区,久久在线观看免费视频,欧美日韩精品久久综

新聞資訊

    Timestream模型是針對時序場景設計的特有模型,可以讓用戶快速完成業務代碼的開發,實現相關業務需求。但是,如果業務系統不僅想實現基礎的相關業務功能,還要達到最佳的性能,并且兼顧到未來的擴展性的話,就不是一件特別容易的事情。

    本文會以共享汽車管理平臺為例,介紹一系列的timestream最佳設計和使用,給業務設計和使用提供一些參考。

    場景和模型簡介

    在共享汽車管理平臺這個場景中,主要是對車輛的狀態軌跡監控、車倆元數據以及訂單元數據進行管理。另外,還會對相關的數據進行計算分析并存儲相關結果:

    • 車輛狀態軌跡:記錄了車輛的狀態監控,比如車速、位置、續航等數據,另外還需要記錄車輛行駛過程中的違章記錄,比如:是否超速、是否闖紅燈等等;
    • 車輛元數據:記錄車輛的基本屬性信息,便于用戶進行車輛檢索,比如:車型、車牌、顏色等;
    • 訂單元數據:訂單相關信息記錄,包含行程的起止時間、車輛、用戶、費用等信息

    業務主要是對上面三部分數據進行查詢和檢索,滿足業務場景的需求。其中車輛元數據以及狀態軌跡數據是典型的時序序列,可以很方便的映射到Timestream模型中。

    下圖是數據模型的映射:

    下面介紹一下模型設計的細節以及設計中需要注意的一些優化點,這些優化點對于業務功能以及性能上都有一定的提升。

    業務模型設計

    在Timestream模型中,主要包含了元數據和數據點兩部分數據,分別使用一個元數據表以及若干個數據表進行存儲。下面介紹這兩類數據在存儲設計的關鍵點。

    元數據表設計

    在共享汽車這個場景下,元數據表主要存儲兩類數據:車輛的基本信息、車輛的最近狀態數據(位置、續航、狀態、違章統計等),業務會根據各類信息進行多條件的組合查詢符合條件的車輛。

    如上圖所示,Timestream的元數據表會通過多元索引來提供豐富的數據檢索能力。在Timestream模型的元數據中,包含了name、tags、attributes三類數據,其中name、tags默認會提供數據檢索能力,attributes則需要在創建Meta表的時候指定需要索引的attributes字段以及相關信息,默認attributes并不支持檢索。

    需要注意的是,目前并不支持動態修改Meta表的索引字段,所以最好能在設計之初能夠考慮到當前以及未來的功能需求,下面介紹一下相關信息是如何映射到模型以及相關的設計。

    name設計

    name字段的選取是很關鍵的,是數據檢索性能的一個重要影響因素,不同的name字段設計可能會導致查詢延時相差一個數量級。name字段的選取建議滿足以下條件:

    • 絕大多數查詢場景都會對該字段進行精確查詢
    • 該字段單個取值下的最大記錄數不宜過多,比如說不超過一千萬條記錄

    在共享汽車管理平臺這個場景下,管理的是各個平臺的車輛,而在車輛檢索的時候,一定會指定的條件是平臺的名字,并且某個平臺的車輛其實也不會太多,一般也就百萬量級,所以這里可以將平臺作為name。

    tags設計

    在Timestream模型中,Name和Tags可以唯一確定某個元數據,在這個場景中,唯一確定某輛車的信息是:平臺、車輛ID,其中平臺是name,所以,tags中只需要存儲ID即可。

    tags設計需要注意:

    • tags的總長度盡可能的短,只把唯一確定主體的信息放到tag中,其余信息均放到attributes中
    • tag只支持string類型的數據,如果業務字段是數值類型,需要將其轉成string進行存儲

    attributes設計

    attributes是主體的可變屬性,也可以用來存儲主體的非唯一屬性。在這個場景中,車輛的基本信息以及當前狀態都是用attributes來進行存儲。attributes設計關鍵點:

    • 創建meta表的時候需要指定有檢索需求的attributes以及相關屬性,默認attributes是不支持索引的
    • 數值型數據盡可能使用int來存儲,attribute支持多類型的數據,但在數據檢索過程中,int類型的數據檢索效率比string類型高的多,建議使用int,索引類型為LONG
    • 考慮未來系統的擴展性,可以預留一列作為擴展字段,索引類型為KEYWORD,并且是Array

    索引創建示例代碼:

    public void createMetaTable() {
     db.createMetaTable(Arrays.asList(
     new AttributeIndexSchema("地區", AttributeIndexSchema.Type.KEYWORD),
     ...
     // 數值類型索引
     new AttributeIndexSchema("座位", AttributeIndexSchema.Type.LONG), 
     ...
     // 擴展字段,數組類型索引
     new AttributeIndexSchema("配置1", AttributeIndexSchema.Type.KEYWORD).isArray() 
     ));
    

    數據表設計

    Timestream可以支持多個數據表的存儲,來滿足不同的業務場景需求。另外,為了能夠利用底層引擎所做的性能優化,我們推薦append的寫入方式,即不會對已有數據進行修改,所以在以下場景中,我們建議業務將數據分到不同數據表中進行存儲:

    • 數據精度不同,特別是在監控場景下,這個需求更加突出。按數據精度分表便于后續數據的查詢,如果查詢長周期的數據可以去查詢低精度的表,減少查詢的數據量,提高查詢效率
    • 需要對數據進行加工處理,也就是會對數據進行更新,建議將處理之后的數據寫到另外一張表中

    在共享汽車這個場景中,需要對車輛的狀態軌跡數據進行流式處理,比如檢測是否超速等違章、車輛狀態軌跡是否異常等,然后將處理之后的數據寫到另外一張表中,提供給業務進行查詢。

    sdk使用

    前面介紹了業務模型設計需要注意的地方,對業務功能拓展能力以及性能都有一定的提升。下面介紹一下timestream sdk使用的一些性能優化點。

    數據寫入

    元數據

    元數據寫入支持兩種方式:put和update。其中put會刪除老的記錄,并且插入一個全新行;update則是對原有記錄的部分attributes進行更新。建議盡量使用Put的方式進行寫入。

    示例代碼:

    public void writeMeta() {
     TimestreamIdentifier identifier = new TimestreamIdentifier.Builder("*滴")
     .addTag("ID", carNo)
     .build();
     TimestreamMeta meta = new TimestreamMeta(identifier)
     .addAttribute("地區", "杭州")
     .addAttribute("座位", 4)
     ...
     .addAttribute("狀態", "閑置");
     // 插入車輛信息
     metaWriter.put(meta);
    }
    

    數據點

    數據點寫入也提供了兩種方式:同步和異步。其中異步接口底層是通過TableStoreWriter進行異步寫入,其寫入吞吐能力更高,對寫入延時不是特別敏感的業務建議使用異步方式。

    示例代碼:

    public void writeData() {
     TimestreamIdentifier identifier = new TimestreamIdentifier.Builder("*滴")
     .addTag("ID", carNo)
     .build();
     Point point = new Point.Builder(1546272000, TimeUnit.SECONDS)
     .addField("位置", "30.1457580736,120.0563192368")
     .addField("車速", 30)
     .addField("續航", 100)
     .build();
     // 異步寫入
     dataWriter.asyncWrite(identifier, point);
    }
    

    數據查詢

    元數據查詢

    元數據查詢的時候,建議指定需要返回的列名。如果沒有顯示指定列名的話,會去讀主表以獲取完整的信息,這樣每一行元數據都會反查一次主表,查詢性能會更差一些。

    示例代碼:

    Filter filter = Name.equal("*滴");
    // 用selectAttributes指定需要返回的attributes
    Iterator<TimestreamMeta> iter = metaTable.filter(filter)
     .selectAttributes("座位", "狀態")
     .fetchAll();
    

    總結

    本文介紹了Tablestore Timestream在模型設計以及sdk使用中的一些優化點,對于業務現有功能實現、未來拓展以及性能提升都有很好的作用。

    作者:lyan094

    為主播和內容創作者提供非凡硬件、軟件和工作室生態的知名公司Elgato于2021年6月8日發布了Stream Deck 5.0這一重大應用更新,其中最重要的包括Stream Deck 商店這一全新的功能。它是一個囊括了插件、圖標包、免版權音樂和音效、使用教學視頻和內容創作技巧的平臺。Stream Deck用戶即日起可免費更新到5.0版本。

    Stream Deck 5.0

    Elgato Stream Deck是一款可全方位自定義的LCD按鍵直播控臺,一直以來廣受歡迎。通過它,內容創作者通過按鍵即可輕松地控制手中的各種應用和工具。現在,除了提升整個Stream Deck的體驗,Stream Deck 商店還為創作者提供了豐富的電子創作素材,讓他們可以利用這些素材來豐富自己的內容,并最終為自己的直播帶來更高的價值。

    Stream Deck 商店包括以下五個板塊:發現、插件、圖標、音樂和音效。

    發現:了解Stream Deck的新功能

    Stream Deck不斷帶來更創新的功能,創作者也不斷研究出使用Stream Deck的新方法。在“發現”板塊,創作者可以隨時了解最新的插件及軟件更新,還可以觀看教程和采訪,并找到靈感來探索Stream Deck的更多用途。

    插件:與Stream Deck集成的應用和工具

    從直播、編輯到設計、開發、社交和工作室自動化,Stream Deck插件可以使幾乎所有基于計算機的工作流程更加流暢和直觀。創作者目前可以使用超過100個插件。通過Stream Deck 商店的“插件”板塊,便可以輕松瀏覽和安裝這些插件。Elgato與合作伙伴會定期添加新插件,而獨立開發者也能通過免費開放的Stream Deck SDK創建插件,并將其添加到商店。

    圖標:為Stream Deck按鍵帶來亮眼的設計

    創作者可以借助按鍵圖標來輕松地識別操作,并通過可視化的方式來確定命令已經執行。圖標功能可以讓Stream Deck的外觀更具個性化,現在,創作者可以輕松下載大量精美的圖標包,安裝即可使用,這些圖標包由Visuals By Impulse等圖形設計專業團隊制作。當然,Stream Deck用戶也可以一如既往地“客制化”出獨一無二的Stream Deck圖標。

    音樂:數以千計的免版權音樂

    Stream Deck用戶可以在直播過程中輕松地播放高品質的音樂,從嘻哈和舞曲,到輕松的樂曲和樂器演奏,數千首各種風格的熱門曲目都可以用于直播或內容創作,并且不會侵犯版權。

    音效:數以千計的免版權音效

    Stream Deck是觸發聲效的理想工具。從黑膠唱片刮擦聲和嘎吱作響的門到鼓掌聲和汽笛聲,“音效”板塊幾乎包含了所有事件或主題的聲音片段。與音樂一樣,Stream Deck 商店中的所有音效都沒有DMCA標記,也沒有版權風險。

    Stream Deck控臺有6鍵、15鍵和32鍵等多個尺寸版本,以及一款帶有15個虛擬鍵的手機APP。

    所有的Stream Deck用戶都可以通過Stream Deck 5.0輕松制作出高質量的視聽作品。

    Stream Deck 5.0面向所有Stream Deck用戶開放,可以立即通過任何Stream Deck軟件版本免費下載。

網站首頁   |    關于我們   |    公司新聞   |    產品方案   |    用戶案例   |    售后服務   |    合作伙伴   |    人才招聘   |   

友情鏈接: 餐飲加盟

地址:北京市海淀區    電話:010-     郵箱:@126.com

備案號:冀ICP備2024067069號-3 北京科技有限公司版權所有