<noframes id="9tj7b">

    Beyond MarTech: 全域融合·共贏未來——悠易 MarTech 戰略發布會  查看更多 >

    技術文檔丨查詢接口的演進過程

    營銷干貨

    發布時間:2021-12-03   作者:

    趙立賀



    悠易互通丨技術專家

    技術產品中心

    數據組

     

    本文是趙立賀所作的《查詢接口的演進過程》,我們一起來看看吧:

      

    對于業務系統而言,存在著各種顯示形式,各種粒度的數據查看界面,而每一個數據查看界面都是由前端和后端的小伙伴配合來完成的,本文從后端開發的角度來分享接口的演進過程。

     

    隨著越來越多的廣告主使用業務系統進行廣告投放,那么系統也就需要滿足不同廣告主的數據需求,這對于開發人員而言苦不堪言。因為每一個數據需求都需要開發的小伙伴進行相應的開發來完成,那么有沒有一種少開發或不開發只調整配置的方式來完成呢?

     

    最開始的時候,產品提出一個數據查看需求,那么開發的小伙伴就要去了解數據查看的粒度,并且跟ETL的小伙伴溝通相應粒度的數據存儲在什么地方,以及應該怎么查詢(也就是一個數據需求,那么后臺小伙伴就要開發一個接口),這樣開發的結果就是ETL的一個結果集會有多個對外的數據查看接口,ETL工程師對結果集的任何一次升級,都需要后臺數據查看開發的小伙伴修改多個對外的查看接口。示意圖如下:



    經過一段時間的開發和維護,會發現大部分接口的結構是類似的,有很大的優化的空間,從而有了第一次的重構。經過接口梳理和抽象,將接口按照主題域來進行歸類,針對每一個主題域進行統一的數據預處理及查詢加工處理來得到符合該主題域的所有結果集。這樣做的好處是對于每一個主題域的處理邏輯是統一的,解決一個問題也就解決了該主題域的一類問題,比如ETL工程師對結果集的一次升級,只需要調整受影響的幾個主題域即可,而且業務系統增加新的數據查看列表,開發的小伙伴先判斷下該數據需要查詢哪個數據主題域,對于該主題域,是否可以通過修改配置就能支持該數據查看列表,否則就擴展該主題的數據查詢加工處理;缺點是會存在部分無效或冗余的字段,增加了網絡傳輸的開銷。示意圖如下:



    經過一段時間的使用,同時為了保證查詢的性能,減少無效字段和冗余字段的傳輸,發現主題域越來越多,而且主題域的粒度也是越來越細(假設在極端的情況下,抽取的主題和接口的數量是一致的)?;谶@樣的現狀,同時為了減少維護的成本,就有了第二次的重構,將前端的多個接口統一為一個,讓前端來控制查詢的內容,后端對于前端而言就類似于一張透明的大寬表,所有的業務需求都通過這張透明的大寬表來完成。示意圖如下:



    其中輸入參數和返回結果的示例代碼如下:


    /** * 實體查詢的輸?入參數 */public class EntityQuery implements IQuery, Serializable {    // 查詢字段    private List<String> queryFields;    // 過濾條件    private List<IFilter> filters;    // 開始時間    private String since;    // 結束時間    private String until;    // 排序信息列列表    private List<OrderItem> orderBys;    // 所屬業務    private String owner;    // 分?頁信息     private PageInfo pageInfo;    // 其他信息    private Object options;}
    /** * 返回結果 */public class ResultData implements Serializable {    // 查詢的字段順序列列表    private List<String> headers;    // 查詢的結果集    private List<Map<String, Object>> data;    // 查詢的sql表達式        private String sqlScript;    // 總條?目數    private int totalSize;}


    通過上述的輸入對象,能夠明確的表示界面需要的字段有哪些,以及對應的查詢條件、排序和分頁信息等,而且返回信息也相對統一了。這樣做的好處是開發的小伙伴能夠有一套完整的數據查看處理流程,而且能夠有更多的精力來優化這套處理流程,使其有更強的穩定性和更高的擴展性。但是,這種一個接口承擔所有的數據查看的形式也是存在缺點的,比如對于頻次的查詢、人群包的流量分析,用戶畫像分析等模塊的數據查看都會有其特定的信息需要傳遞到后端才能進行相應數據的處理等。所以現階段的接口統一也是在現有業務情況下來進行的。后續隨著業務的不斷變化,接口也會跟著不斷的演進。 


    總之,隨著數據查看接口的不斷演進,接口越來越少、而且越來越靈活的宗旨不變。但是,接口的演進是在公司的特定業務場景下進行的,并沒有一種萬能的方法,能夠適應于所有的業務。期待著我們的接口更少更靈活。


    分享到..

    想要實現全域新增長

    選擇悠易科技,成為1000+成功企業的一員

    申請試用
    久久99热这里只有精品国产,97久久精品国产亚洲AV,亚洲国产精品一区二区第四页,亚洲综合精品成人