王寶會 邢景軒 高 遠
(北京航空航天大學軟件學院,北京 100191)
運用FastDFS和Drill構建海量BIM族數據存儲和查詢平臺
王寶會 邢景軒 高 遠
(北京航空航天大學軟件學院,北京 100191)
BIM族數據屬于半結構化數據,其數據結構相對松散且可變,難以使用傳統關系數據庫進行存儲和查詢。本文以FastDFS分布式文件系統和Drill實時查詢引擎為基礎,在BIM資源庫下針對族數據的存儲和查詢構建了的分布式數據處理平臺。經測試,較傳統以關系數據庫為核心的非分布式系統,存儲性能和查詢性能均有較大提升。
族數據; BIM; FastDFS; Drill
【DOI】 10.16670/j.cnki.cn11-5823/tu.2016.06.04
BIM(Building Information Modeling)是“建筑信息建模”的簡稱。因其在縮短工期、節約成本、提高生產效率等方面的先天優勢,BIM相關技術廣泛應用于以美國為首的眾多國家。[1]BIM技術的不斷發展促使BIM相關數據迅速增長,建立BIM數據的資源庫變得越發重要。族數據是BIM資源庫中的主要處理對象。
1.1 數據介紹
1.1.1 族
族(Family)是Autodesk的BIM構建軟件Revit中的一個概念。建筑模型由墻、窗、門等圖元(Element)構成,族中包含了這些圖元的幾何定義和及其所使用的參數(其名稱與含義),圖1展示了Revit中的門圖元及其門族,圖中門圖元為三維模型,其對應的族中包含了尺寸、材質等參數。族包含多個通用參數集,不同的族類型包含不同的參數集合,若圖元參數的集合相同,則屬于同一個族類型。屬于同一族類型下具體實例的具體參數值可以各不相同。[2]
對項目中任何位置的圖元族數據修改后,Revit 都能在整個項目內協調此修改,始終保持模型的一致性,如鋼筋之間的間隔相等,如果修改了圖元族數據中的長度,Revit會使這種等距關系仍保持不變。所以族是體現Revit參數化建模的數據基礎,是BIM思想在Revit中的核心表現。
BIM資源庫的作用之一便是匯總作為建筑模型數據基礎的族資源,提高用戶存儲和查詢族信息的效率,其中各不相同的族所包含的參數便是存儲和查詢的信息實體。

圖1 Revit中的門圖元與其門族
1.1.2 半結構化數據
Serge Abiteboul簡要指出,半結構化數據(Semi-structured Data)既非完全無結構,又不同于傳統關系數據庫中的數據一般結構嚴謹。[3]李慶華和劉昊提出了一種用待確定文法分析半結構化數據的方法,并在文中給出了半結構化數據更為明確的定義:
“如果數據的結構所對應的語言無法用全局一致的上下文無關文法描述,但是存在數據的一個有序劃分,對分割出來的每個分劃,利用前i個分劃的語義信息,可以得到第i+1個分劃的局部一致的上下文無關文法,則稱之為半結構化數據。[4]”
所謂“上下文無關”,即對于形式V→w,字符串V總可被任意字符串w自由替換,而無需考慮V出現的上下文[5]。
由此可見,區分結構化、非結構化和半結構化數據的關鍵在于數據是否存在全局或局部的上下文無關文法。
半結構化數據在數據結構定義上有很大的靈活性,適于描述互聯網和大數據環境中多樣的復雜數據,但這也使得傳統的關系數據庫對其無從下手,加大了數據存儲、查詢等操作的難度。
1.2 應用模塊介紹
1.2.1 FastDFS
FastDFS(Fast Distributed File System)是一款類GFS(Google File System)的開源分布式文件存儲系統,由淘寶網的資深架構師余慶開發。
FastDFS含有TrackerServer和StorageServer兩種角色,分別負責調度任務和文件數據的存儲。在架構和設計理念,較之其他分布式文件系統,其主要特點為輕量級、分組方式和對等結構。[6]
1.2.2 Drill
Drill是Apache Hadoop的頂級項目,是Google Dremel的開源實現。自2006年《Dremel:Interactive Analysis of Web-Scale Datasets》論文完成至今,Google以將Dremel廣泛運用于Google Books的OCR檢索和Gmail的垃圾郵件分析等場景。這些應用體現了Dremel實時分析、處理數據的優秀性能,也從側面體現了Drill的實時查詢在設計理念上的先進性。
由于不需要調用MapReduce,Drill可以在幾秒內查詢PB級的半結構化數據,為海量數據提供分布式的、低延遲的交互式查詢服務。不同于Hive等查詢系統提供了類SQL查詢語句,Drill支持標準的SQL,減輕了開發人員的學習成本。
1.2.3 Zoopkeeper
Zoopkeeper同Drill一樣,是隸屬于Apache Hadoop家族的子項目,是Google Chubby的開源實現,為如Drill等分布式應用程序提供任務協調服務。
1.2.4 Neginx
Nginx(“Engine x”)是俄羅斯人Igor Sysoev編寫的一款高性能的HTTP和反向代理服務器,可提供負載均衡服務。
1.2.5 Keepalived
Keepalived通過VRRP(Virtual Router Redundancy Protocol)協議為集群提供高可用性[]。VRRP,即虛擬路由冗余協議,可使用戶通過虛擬IP多路訪問鏈路上的多臺路由器[8]。
經總結,族數據有如下特點:
2.1 族數據是半結構化數據
圖1顯示,Revit族的數據模型為嵌套數據模型。顯然族類型參數存在局部的上下文無關文法,根據李慶華和劉昊的定義(見引言),屬于半結構化數據。半結構化數據可被類JSON的數據格式輕松表示。圖3為族數據在類JSON[9]形式下的數據格式和數據實例,其中required為必須字段(有且僅有唯一值),optional為可選字段,repeated為可重復字段。

圖3 族數據的類JSON數據格式和數據實例
在BIM資源庫之上建立的族數據存儲查詢平臺,應能存儲和查詢半結構化數據。
2.2 族數據為小文件
BIM的族數據主要以Revit的.rft文件格式存在,單個文件大小在KB級別,故族數據存儲查詢平臺應善于處理海量的小文件。
2.3 族數據總體體量龐大
BIM思想在工程實踐中經過多年的實踐,積累了大量的族數據,又由于族數據是BIM從業公司的重要財產,雖然數據量龐大,但一般情況不會刪除。所以族數據處理平臺的存儲系統應易于擴展,以適應不斷增加的數據量。平臺還應提供實時條件查詢功能,如可在秒級時間查詢出同屬某種材料的門族,便于工作人員通過檢索族信息的重要屬性快速鎖定所需族,以便其進行進一步的編輯操作。
2.4 族數據應用周期長
BIM數據應用于建筑設施的全部生命周期[10](見圖4),而族數據作為BIM基礎數據,更是會被反復運用于多個項目工程中。所以族數據存儲查詢平臺應能為族數據提供高可用性存儲,以保障數據的長期可靠保存。

圖4 BIIM數據貫穿建筑設施全部生命周期
根據族數據的存儲和查詢需求,在BIM資源庫中設計了族數據存儲及查詢平臺,其平臺架構圖見圖5,物理拓撲圖見圖6。

圖5 平臺架構

圖6 平臺物理拓撲
平臺用戶界面部分由兩臺配置有為Negix和Keepalived的WebServer提供,其中Negix負責將存儲和查詢服務負載均衡至TrackerServer,Keepalived為這兩臺WebServer提供高可用性,并建立虛擬IP,為用戶提供統一的服務接口。用戶通過WebServer訪問族數據存儲及查詢服務頁面,WebServer將族數據從.rft文件轉換至JSON文件。
存儲系統由FastDFS集群組成,負責對JSON文件進行分布式存儲,對其提供高可用性,并為查詢系統提供數據支撐。
查詢系統由Drill和ZooKeeper構成。Drill集群通過處理FastDFS所存的JSON文件,為平臺提供實時查詢服務,Zookeeper集群用于協調Drill集群的分布式查詢任務。
經測試,較傳統由關系數據庫為核心的非分布式數據處理系統,存儲性能提升近20%,查詢性能提升近30%。
3.1 族數據的存儲
由于FastDFS為文件系統,對任何結構、非結構和半結構數據均以文件形式存儲。而又如JSON等嵌套式數據模型可以自然地描述編程語言中使用的數據結構、分布式系統之間的交換消息和結構化文檔等數據。所以對于族數據的存儲,可在WebServer上通過Revit API解析.rft文件,提取族中包含的屬性,并轉化為JSON文件,存于FastDFS分布式文件系統。
用戶可在WebServer中向Tracker Server申請文件存儲服務,FastDFS存儲文件的流程如圖7所示。

圖7 FastDFS存儲文件流程
用戶通過族數據平臺的存儲頁面向FastDFS的WebServer發起存儲請求,TrackerServer將可用StorageServer的IP及端口返回給用戶,用戶根據返回信息將待存儲文件上傳至StorageServer,最終,StorageServer返回文件ID,ID中包含文件的存儲元數據。
FastDFS不同于HDFS等分布式文件系統,不會對文件進行分塊存儲,直接存儲源文件,故FastDFS適合存儲中小型文件,而且在文件名中保存元數據,不用另設置元數據的存儲,簡化了后期查詢文件的過程。
FastDFS采取對等結構,可存在多臺TrackerServer和StorageServer,且各自集群內部關系平等,從而實現存儲的系統高可用性。FastDFS以分組方式組建其存儲集群,集群由一個或多個分組組成,每個分組下包含一臺或多臺StorageServer。同一組內的StorageServer相互備份,所存文件完全一致,通過冗余備份實現文件數據的高可用性。
FastDFS支持在線擴容,存儲集群的存儲總容量為所有分組存儲容量的線性和。當有新的StorageServer加入某一分組時,該StorageServer會在啟動時,為已存在的每個TrackerServer建立一個線程用于通信。TrackerServer在接收到新StorageServer的心跳包時會更新自己分組的映射表,并將新表同步至該分組的每臺StorageServer上。最后該組內一臺存有全部文件的StorageServer會將全部文件備份至新進StorageServer。
當有新的分組加入時,新分組中的StorageServer會以在啟動時向TrackerServer發送自己的信息。TrackerServer整理信息,建立該分組與其下StorageServer的映射表,并將該表返回給新分組中的每臺StorageServer。
3.2 族數據的查詢
Drill可通過存儲插件連接各不相同的數據源[11](見圖8),其支持的數據源除了有Hadoop家族中的HDFS、HBase和Hive外,還包括任意的分布式文件存儲系統。Drill還可直接解析JSON文件。

圖9 Drill任務生成流程
Drill集群中由Drillbit執行查詢服務。Drillbit可部署于分布式系統中的任意節點上,且各Drillbit間無主從關系,每一個Drillbit均包含Drill的全部服務和功能,集群中的任意Drillbit都可接收來自用戶的查詢。[12]
當用戶在WebServer發起SQL查詢時,會從Zookeeper獲取當前可用的Drillbit表,并從中選擇一個Drillbit作為Foreman,負責接手初始查詢。如圖,Foreman會將SQL命令轉化為邏輯計劃(Logical Plan),其中包含一系列可被Drillbit識別的邏輯操作。之后,邏輯計劃經優化器處理,轉化為物理計劃(Physical Plan),描述了查詢任務的拆分情況,用于具體的分布式查詢任務。

圖8 Drill通過存儲插件連接數據源

圖10 Drill任務的分解
對于查詢任務分解,Drill集群中的Foreman通過Zookeeper獲得可用Drillbit表,并將物理計劃中經拆分得到的子查詢任務下發給各Drillbit,構建用于查詢和回收結果的任務執行樹(見圖10),最終回傳結果給用戶。
本文首先介紹了BIM的族數據和平臺應用模塊,隨后分析了族數據的存儲和查詢需求,最后給出了BIM資源庫下和族數據存儲和查詢平臺的架構設計,并詳細介紹了存儲和查詢的執行流程及原理。測試結果顯示,較以關系數據庫核心的非分布式數據處理系統,新平臺的存儲性能和查詢性能為均有較大提升。
[1]王珺. BIM理念及BIM軟件在建設項目中的應用研究[D]. 西南交通大學,2011.
[2]Revit 2016 help[EB/OL]. [2016-10-27]. http://help.autodesk.com/view/RVT/2016/ENU/
[3]Abiteboul, S. Querying semi-structured data. International Conference on Database Theory. Lecture Notes in Computer Science, 1997, 1186:1-18.
[4]李慶華,劉昊.用待確定的上下文無關文法分析半結構化數據[J].華中理工大學學報,1999,27(5):60- 62.
[5]維基百科上下無關文法[EB/OL]. [2016-10-27]. https://zh.wikipedia.org/wiki/%E4%B8%8A%E4%B8%8B%E6%96%87%E6%97%A0%E5%85%B3%E6%96%87%E6%B3%95
[6]余慶.分布式文件系統FastDFS架構剖析[J],程序員,2010,(11):63-65.
[7]Keepalived[EB/OL]. [2016-10-27]. http://www.keepalived.org/
[8]Configuring VRRP[EB/OL]. [2016-10-27]. http://www.cisco.com/c/en/us/td/docs/ios-xml/ios/ipapp_fhrp/configuration/15-mt/fhp-15-mt-book/fhp-vrrp.html
[9]Melnik, S., Gubarev, A., Long, J. J., Romer, G., Shivakumar, S., Tolton, M., &Vassilakis, T. Dremel: interactive analysis of web-scale datasets. Proceedings of the VLDB Endowment, 2010, 3(1-2): 330-339.
[10]A bulidngSMARTallianceTM Project, BIM Project Execution Planning Guide, 2010,Developed by Computer Integrated Construction Research Group, Department ofArchitectural Engineering,The Pennsylvania State University, retrieved fromhttp://bim.psu.edu/. 1-9.
[11]Drill Connect a Data Source Introduction[EB/OL]. [2016-10-27]. https://drill.apache.org/docs/connect-a-data-source-introduction/
[12]Apache Drill Architecture: The Ultimate Guide[EB/OL]. [2016-10-27]. https://www.mapr.com/blog/apache-drill-architecture-ultimate-guide/
Using FastDFs and Drill to Build BIM Family Platform for Storage and Query
Wang Baohui, Gao Yuan
(SoftwareCollegeofBeihangUniversity,Beijing100191,China)
BIM Family is semi-structured data.The data structure is relatively loose and variable,so it is difficult to bestored and queried usingtraditional relational database.Based on FastDFs and Drill,we build a distributed data processing platform tostoreandquery BIM family under BIM resource library.After testing,compared with the non-distributed system which it is core is the relational database,the platform performance is significantly improved.
BIM Family; BIM; FastDFS; Drill
國家科技支撐計劃子課題“建筑行業設計服務共性技術集成平臺研發與應用”(編號: 2014BAH25F03-04) 【作者簡介】 王寶會(1973-),男,教授級高工,碩士,主要研究方向:軟件架構; 邢景軒(1993-),男,碩士在讀,主要研究方向:軟件工程; 高 遠(1992-),男,碩士在讀,主要研究方向:軟件工程。
TU17
A
1674-7461(2016)06-0023-06