中圖分類號:R28;TP311.13 文獻標志碼:A 文章編碼:1672-7274(2025)04-0025-03
Abstract: Traditional Chinese medicine formulas are treasures of China's traditional Chinese medicine culture, with a long history and rich experience accumulation, widely used in modern medicine and traditional Chinese medicine fields. Due to the characteristics of \"one prescription per thousand\" and \"a mixture of prescriptions and medicines\" intraditionalChinesemedicineformulas,howtoachieverapidprocessing ofmassivedataintraditional Chinese medicine formulas has becomea hot topic of concern in the current research field of traditional Chinese medicine. In response totheproblemsoflargescaleandcomplexstructureoftraditionalChinese medicine prescriptiondata,thisarticlstudies theunstructured storage modelof raditioal Chinese medicineand prescriptions,hopingthattheresearchresultscancontribute toth developmentofemergingtechnologyfieldssuchasnew effcacydiscoveryoftraditional Chinesemedicine,optimizationof traditional Chinese medicine prescriptions,and data mining of traditional Chinese medicine in the era of big data.
keywords:Neo4j; Chinese herbal formula; data storagemodel
從20世紀80年代開始,我國一些科研院所致力于中醫藥文獻的信息化建設[1,2],例如,中國中醫科學院使用Oracle等國際著名關系數據庫公司的產品來存儲中藥、方劑、臨床使用等數據。截至目前,中國中醫科學院共建成了中醫藥數據庫40余個,記錄的數據有110萬條,涵蓋了中醫藥期刊文獻、疾病診療、中藥、方劑、民族醫藥、藥品企業、中醫藥標準等多個領域,是目前我國最大最全的中醫藥數據庫。這些商業化數據庫系統具有強大的數據存儲、備份、查詢、災難恢復等功能。然而,這些數據庫系統都是面向關系型數據的,無法有效地處理非關系型數據。特別是,隨著大數據時代的到來,各種新穎的應用產生了少量的文本、交易整數、流數據、圖數據、圖片、聲音、視頻等非結構化數據。為應對非結構化數據的高效管理問題,近幾年來各種NoSQL非結構化數據庫系統相繼問世,其中,
Neo4j是一種高效的、基于圖數據模型的NoSQL數據庫系統。Neo4j將具有相互關聯關系的數據對象以網絡,即有向圖或者無向圖的形式進行存儲,例如,圖中的結點代表單個數據對象,而結點之間的邊表示兩個結點之間有某種關聯關系。
研究現狀
進入21世紀以來,IT技術的飛速發展加快了我國中醫藥行業的信息化進程。目前,一些中醫藥科研機構和院所將我國有文獻記錄的中醫藥數據進行數字化。其中,中國中醫科學院建設的中國中醫藥數據庫是目前最大、最全的中醫藥信息數據庫,包含中醫藥期刊文獻、疾病診療、中藥、方劑、中醫藥標準等多個子數據庫。同時,該數據庫平臺還提供基于關鍵詞匹配的信息檢索方式,可以根據藥名、產地、性狀、功效、主治、禁忌、不良反應及治療、化學成分、配伍禁忌等信息對中藥材、方劑、處方臨床使用情況等進行查詢和檢索[3]。
中國中醫藥數據庫采用關系數據模型(Entity-RelationshipModel)來描述中藥、方劑、臨床使用等醫藥數據,并使用Oracle公司的關系型數據庫產品進行數據存儲。然而,關系數據模型缺點是:無法靈活地增加和刪除數據記錄的屬性,當需要增加某個中藥材新發現的主治功能、化學成分等屬性時,整個數據庫結構都必須做相應的修改,造成冗余屬性的產生,
浪費了大量的磁盤存儲空間,降低了中醫藥數據庫信息系統的性能。
傳統的中醫藥數據庫使用二維關系表格的形式來存儲中醫藥數據。例如,在中藥數據庫表格中,表格的每一行代表一種中藥材,每一列代表中藥材的一種屬性,如藥名、產地、主治、用法
等。類似的,方劑數據庫中表格的每一行代表一種藥方,而表格的列則記錄該藥方的名稱、藥物組成、功效、主治、禁忌等。這種結構化的數據模型不利于數據屬性的動態更改,容易造成冗余數據過大,影響數據庫的性能。非結構化數據模型克服了結構化數據模型的缺點,能夠用于描述自然界中實體之間關系較復雜的數據,如文本數據、圖數據等。
本文中研究了幾種新穎的復雜查詢模型和相應的高效處理算法,并從現實應用的角度來闡述這些復雜查詢模型在中醫藥學研究和臨床應用中的意義。
2 技術路線和研究方案
2.1中藥和方劑數據結構研究
針對中藥和方劑數據的特點,本文采用圖數據模型來表達和存儲中藥、方劑數據。一般而言,每一種中藥的有用信息包括藥名、產地、性狀、功效、主治、禁忌、不良反應及治療等。由于在中醫藥研究過程中大量使用計算機、化學等學科知識和手段,中藥的新性質會不斷地被發現,因此中藥的屬性也會經常發生變化。另外,方劑是多個中藥的集合,每個方劑包含有方名、別名、藥物組成、用法用量、功效、主治、用藥禁忌等性質。根據方劑與中藥之間的對應關系,我們可以使用圖數據模型來表示,如圖1所示。圖中的每個結點表示一種中藥,而兩個結點的邊表示該兩個中藥出現在同一個方劑中。同時,每個結點用JSON格式來描述,該格式可以方便地通過增加或者刪除“屬性:值”來動態地改變每個結點的信息。例如,為圖1的左邊子圖中的結點“桂枝”增加“功效:利尿,鎮靜,降壓”這一屬性后,得到圖1右邊子圖。由于每個結點的屬性都采用了JSON數據格式,并且獨立于其他的結點,因此當結點“桂枝”的屬性個數發生更改時,圖1中其他的結點都不會受到影響,避免了冗余屬性的產生,大大降低了數據庫更新代價。

除了中藥數據以外,方劑數據也能夠用圖數據模型來表示,即圖中的邊可用于表示兩個結點是否出現在同一個方劑中。如圖1所示,桂枝、麻黃、杏仁、甘草這4種中藥組合在一起是方劑“麻黃湯”,因此這4個結點相互之間都存在著一條實線邊。類似地,方劑“桂枝湯”也能夠方便地用圖來表示,即圖1中虛線邊及其連接的所有結點所形成的子圖。
2.2復雜查詢及查詢處理算法研究
傳統的中醫藥數據庫通過網絡平臺接收用戶輸入的查詢關鍵詞,然后使用關鍵詞精確匹配、模糊查找等方式從數據庫中找到相似的數據記錄。隨著現代中醫藥學的發展,人們根據現實生活的需要提出了新的、更為復雜的查詢問題,例如,“在所有方劑中,同時使用最頻繁的2味中藥是什么”“給定某個方劑A,哪些其他的方劑包含了A中5味及以上的中藥材”等。對于這類復雜的查詢問題,傳統的中醫藥數據庫檢索系統只能通過簡單的關鍵詞匹配技術來檢索與用戶的關鍵詞相似的數據記錄,無法對這類新穎的查詢問題進行處理。
我們把方劑用集合的形式來表示,假設方劑
包括有 ?L 種中藥,即 X1,X2,…,XL ,其中
,那么問題“在所有方劑中,同時用得最頻繁的2味中藥是什么”對應于下面的優化問題:

通過如上定義,此類復雜查詢問題轉化成如何在中藥、方劑圖數據庫中找出滿足條件的兩個結點(即中藥)
,使得公式(1)中的目標函數值最大。類似地,問題“給定某個方劑 ∣A ,哪些方劑包含了A中5味及以上的中藥材”可以轉換成如下的求解集合A問題:

為了計算公式(2),需要對整個中藥、方劑圖數據庫進行遍歷,找出所有滿足條件的方劑 Ai ,并將其返回給用戶。如何快速地在大量數據中計算出這些問題的答案是非常具有挑戰性的。下面本文就如何有效地表示方劑數據,以實現方便快捷的訪問展開分析。
2.3中藥材、方劑數據的表示和存儲
如2.1節所述,雖然普通的圖數據模型可以用來表示方劑數據,但是會產生較多的邊,因為用結點表示的兩味中藥材有可能包含在多個方劑中,即這兩個結點之間有可能存在多條邊。傳統的無向圖任意兩個結點間最多允許存在一條邊,而有向圖則最多允許存在兩條邊,因此,用傳統的無向圖、有向圖模型無法表示和存儲方劑數據。
用戶 復雜查詢處理引擎Top-k,集合求交
5 查詢處理結果 等復雜查詢請求 8080基于Inverted List、BloomFilter等技術的索引結構圖聚類結果 ↑↓國超圖數據國 結構建模·國
中藥、方劑數據 基于Neo4j的NoSQL中藥、方劑數據管理系統
本文的技術路線如圖2所示。首先,本文中收集了中醫藥文獻、臨床使用記錄等原始數據,對其進行必要的格式轉化、數據清洗等數據預處理;預處理后的中藥、方劑數據用于超圖數據建模,確定方劑數據的超圖表示方法。然后,對Neo4j圖數據庫系統進行擴展,設計高效的超圖數據存儲和管理方案,并將建模后的中藥、方劑數據導入,以利于用戶對中藥方劑數據進行數據挖掘、數據分析等復雜的計算任務。
2.4中藥材、方劑數據的超圖模型表示
由于方劑是中藥的集合,不同的方劑中有可能包含有相同的幾味中藥,使得傳統的圖模型無法有效地對方劑數據進行表示。如圖3左邊子圖所示,方劑“麻黃湯 σ=σ {桂枝,麻黃,杏仁,甘草}”和“桂枝湯 σ=σ {桂枝,白芍,生姜,大棗,甘草}”有重疊,它們的交集為“{桂枝,甘草}”,即結點“桂枝”和“甘草”被兩個方劑所使用,它們之間存在著兩條邊。然而,傳統的圖中任意兩個結點之間只能存在不超過兩條邊。因此,簡單地將傳統圖數據模型用于表示方劑數據是不可行的。針對這一問題,本文采用超圖(Hypergraph)模型表示方劑數據。超圖 G= 由結點集V和邊集 L 構成,其中 |E| 可連接k個結點, k?2 并且 k?|V|, 。如圖3所示,實線圍成的區域對應于一條超邊(Hyperedge),其包含了4個結點,對應于方劑“麻黃湯”。類似地,虛線圍成的區域包含5個結點,對應于方劑“桂枝湯”。

3 結束語
本文在現有的中藥、方劑數據庫系統基礎上,將Neo4j作為主要數據存儲模型,構建了中醫藥領域知識與信息的非結構化數據存儲模型。然而,由于中醫藥領域知識和信息的特殊性,中醫藥領域知識與信息存儲模型還需要進一步完善。中醫藥領域知識與信息具有異構、多源性、碎片化等特點,這給中醫藥領域知識與信息的存儲管理帶來了很大挑戰。隨著大數據時代的到來,中醫藥領域知識與信息也必將發生巨大變化。因此,中醫藥領域知識與信息的存儲和管理方法還需要進一步研究和發展。
參考文獻
[1]楊海燕,張玉祥,范磊.中醫藥特色數據庫建設的內容和層次分析[J].中華醫學圖書情報雜志,2014,23(2):53-56.
[2]黃黃.我國中醫藥高等院校特色數據庫現狀與發展研究[J].中國中醫藥圖書情報雜志,2015(4):24-26.
[3]鄧雪蓮.面向中醫藥院校的非結構化數據庫教學方法探討[J].廣西教育學院學報,2018(10):156-158.