當前位置:
首頁 > 最新 > 3:MIMIC資料庫本地環境的搭建

3:MIMIC資料庫本地環境的搭建

本文作者

李昱熙,北京大學第一醫院心內科主治醫師。


本文提綱

安裝前準備

安裝程序與軟體準備

安裝本地MIMIC資料庫

測試

01

前言

從這一次的文章開始,我們會涉及代碼和具體的技術細節,以乾貨為主,就不多說廢話了。因為考慮到windows操作系統還是主流,所以本文以windows 10 64位版本作為操作系統環境介紹。其他操作系統中的本地環境搭建過程,請參考MIMIC官網。

另外,本文選擇了PostgreSQL作為資料庫伺服器,主要是因為一是免費,二是能很好的支持這個體量的數據(主要是相對於MySQL而言)。當然你也可以選擇其他的資料庫軟體,MySQL、Oracle等,也都沒有問題。

請注意:

在閱讀本文之前,我們默認你已經對MIMIC資料庫有所了解,並已經獲取了數據的使用許可權,如果還沒有,請從頭閱讀我們此前的文章(見最上方鏈接)。

另外,整個本地資料庫的搭建所需要耗費的時間長度取決於你的電腦配置,以及是否仔細看了我下面寫的每一個字。會從3個小時到幾天不等,請做好心理準備。但這是你想使用MIMIC無法跳過的一步,如果準備好了,我們就開始吧!

02

安裝前準備

2.1 硬碟空間的準備

壓縮文檔約10G,解壓縮之後大概需要佔用40-50G的空間。最終資料庫程序加導入的數據大約佔用60G空間,如果再計劃後續使用eICU的資料庫,那麼請起碼預留200-300G空間的一個分區。

2.2 下載的準備

MIMIC和eICU數據表,csv或csv.gz格式(後者為壓縮格式,佔地較小)

下載地址:請參見之前文章的介紹;

創建數據表腳本文件[Github: mimic-code-master.zip],將buildmimic/postgres/下面的所有.sql文件保存在某位置,最好比較好找的地方,比如C:mimic(本文後面都將按此地址舉例);

下載地址:https://github.com/MIT-LCP/mimic-code/tree/master/buildmimic/postgres

PostgreSQL軟體,筆者選擇了10.02版本,windows64位版本;

下載地址:PostgreSQL官網(免費軟體),具體看下方截圖。

解壓縮軟體,推薦7-zip,可以無需手動解壓縮。

下載地址:7-zip官網。

PostgreSQL下載版本選擇界面

03

程序安裝準備

3.1 安裝PostgreSQL資料庫伺服器

雙擊下載好的安裝包進行安裝。建議所有步驟都點Next根據默認選項進行,默認的安裝位置在C:Programe FilesPostgreSQL10。因為是在本地環境,一般不存在太大風險,推薦使用默認的密碼postgres,如果你修改的話,一定牢牢記住這個密碼。另外,安裝過程中有一個步驟是存放資料庫數據的位置,默認是在安裝目錄下的data文件夾,也可以自行選擇其他位置,這個目錄是最占空間的地方。期間會默認安裝C++支持,不用管就可以。

安裝完成之後,開始菜單里會多出PostgreSQL 10的目錄。

3.2 安裝命令行支持解壓縮(7-zip)(可選)

這一步是可選項,但筆者推薦你完成這一步,可以省去後續的很多煩惱。另外,7-zip是一個非常好用的壓縮軟體,個人認為比RAR好用。安裝7-zip,很簡單,也很綠色,按默認來就可以。

如果你選擇安裝,那麼下面的步驟比較關鍵。因為我們的目的是自動調用命令行批量解壓縮數據原始文件,所以需要系統知道我們的7-zip安裝到了哪裡。這就要告訴操作系統具體的路徑,也就是要修改windows系統的PATH。

具體可以:

右鍵點擊我的電腦;

選擇屬性,在高級系統設置-高級里點擊最下面的「環境變數」;

在彈出的對話框里下方的「系統變數」里找到Path,選中,並點擊下方的「編輯」;

在彈出的對話框點擊右側的「新建」,輸入7-zip的安裝地址,默認的是C:Program Files7-zip,如果你安裝到了其他的地方請修改成為相應的地址。

當設置完成之後,點擊開始菜單-運行,輸入「cmd」打開命令行。在裡面輸入7z,如果提示「找不到7z」,那就證明PATH沒有設置好。如果像下圖一樣,出來一大堆內容,那就表示7-zip已經準備好了。

7-zip的系統PATH設置成功界面

04

安裝本地MIMIC資料庫

4.1 創建資料庫

從開始菜單PostgreSQL目錄里找到SQL Shell(psql),會打開一個命令行的界面。一路enter直到需要輸入密碼的地方,輸入剛才讓你一定牢牢記住的密碼(默認是postgres)。注意輸入的時候類似在linux系統下,不會有游標提示。

然後輸入下列代碼:

解釋一下:第一行的意思是如果已經有了mimic這個資料庫,那麼就刪除該資料庫;所以如果是第一次運行,系統會提示:注意資料庫「mimic」不存在,跳過DROP DATABASE。

第二行的意思是創建一個資料庫,名稱叫做mimic,所有者為postgres,也就是剛才的默認用戶名了。

當然,資料庫的名字、你的用戶名等等你都可以自行選擇。注意在後面過程中相應的地方也改成你自己的就可以。

4.2 連接到資料庫

接下來,連接到我們剛才創建的資料庫mimic。

輸入下面的代碼(如果你用了自己的資料庫名字,請將mimic修改為你自己的資料庫名):

不出意外,系統會提示已經連接到了資料庫,以及當前的用戶。

4.3 創建Schema

這一步需要強調一點,就是如果以後再次使用psql來查看管理資料庫,那麼會要求每次都要先運行上面第二行的代碼。當然,如果是使用其他的資料庫軟體,比如後面我們會介紹到的Navicat,就不需擔心這一點了,這些我們在下篇文章里詳細講。

下一步需要用到創建數據表的腳本文件,也就是之前2.2.2里我下載下來並放在C:/mimic里的那些.sql文件,記住那個位置,後面要用到。

4.4 創建數據表

這裡要注意:如果是PostgreSQL 10的版本,那麼就用後面帶pg10的第一行那個,如果是其他的版本就用下面的那條。

這句的意思就是創建所有的數據表(table)。如果在過程中看到類似「注意:表xxx不存在,DROP TABLE」的字樣,不用擔心,這是程序設計的容錯機制,保證同一個表不會重複創建。

4.5 導入數據

這基本是最後的步驟了,但越到最後,要求我們越有耐心。

上面代碼中的第一行,是設置遇到錯誤就停止導入,以便我們及時發現問題。

第二行是確定MIMIC數據所在的目錄。我把它放在了D盤mimic文件夾中的v1_4這個文件夾里,如果你放在其他地方,請修改代碼中引號里的內容。

第三行是調用自動導入數據的命令。這其中就會用到上面3.2里解壓縮的7-zip了。會有幾種情況:

如果你已經把所有的未壓縮的文件準備好,也就是.csv格式(注意,有些windows設置可能不顯示文件後綴名,所以可能你認為的.csv格式其實是.csv.gz也就是壓縮的.gz格式),那麼請調用postgres_load_data.sql;

如果你像我一樣,硬碟空間有限,也不想一個一個解壓縮,那可以直接利用剛才我們設置好的7-zip來自動解壓縮,但前提一定是要把PATH寫對,能夠在命令行直接輸入7z來調用才可以。那麼就按照上面的第三行來寫;

當然,你也可以選擇使用gzip。那就調用postgres_load_data_gz.sql。一定不要選錯。

數據導入中

如果你能看到上圖裡最下面這幾行字,停止在COPY 7567,那麼基本上就成功了,後面做的就是需要等待。這個等待的時間取決於你的電腦配置,主要看是否有固態硬碟,可能是2-3個小時,也可能是十幾個小時,也可能是一整天。

所以,接下來的時間,大可去睡覺,或者干別的事情了。

筆者第一次用了一台老的自用筆記本,花了大約30個小時完成了所有的數據導入;第二次寫這篇教程,用了一台配置較高的台式機,花了大約3小時不到的時間。

聽在COPY 7567這裡不動的意思是:已經複製了前三個數據表的數據,以及每個表的數據量。因為第四個表CHARTEVENTS是最大的一個,所以耗時會很長。如果最後你能看到第四行變成了COPY 330712483,意味著CHARTEVENTS里的所有數據都導入成功。不過,最後也許第四行會顯示COPY 0,這時不用擔心是不是沒有複製成功,而是因為PostgreSQL自動把這一個大表分割成了若干個子表,chartevents_1, chartevents_2等等。在後續的檢查環節,我們可以查看一下數據表中的行數,如果也符合330712483,就意味著沒有遺漏數據。

除了第4個表,第19個表NOTEEVENTS耗時也比較長。這兩個表是MIMIC資料庫里壓縮之後大小超過1G的兩個表。

最後大功告成,可以重新看到熟悉的mimic=#以及閃動的游標。

4.6 建立索引

因為資料庫非常大,其中每一個數據查詢如果沒有設置索引,都會變得非常慢,所以下面設置索引是非常關鍵的步驟。

依然會提示「注意:索引xxx不存在,這都沒有關係」。以及不要忘記把代碼裡面的位置改成你自己存放sql文件的位置。

當然,建立索引也是要耗費一些時間的。

05

測試是否成功

如果都做完了上面的內容,那麼就可以來測試一下,是不是大功告成了!

這是一個很簡單的SQL語句,意思是從ICUSTAYS這個表(記錄了患者進出ICU的數據)里前十條包含icustay_id(患者ICU入住的ID)、intime(進入時間)、outtime(出ICU時間)的數據。如果上面都沒有出任何問題,那麼應該可以順利看到查詢出來的結果。

當然了,MIMIC也提供了一個完整的數據檢查腳本,可以運行下面的語句來測試,但也是要耗費一定時間的哦。

最後會出來一張有26行記錄的預期數據量與實際導入數據量的比較,如果最後一行row_count_check都是PASSED,那麼就證明一切都沒有問題了。

06

寫在最後

如果你認真閱讀了上面的每一步,應該都是可以完成本地資料庫環境的搭建。當然了,過程中可能會出現任何不順利的地方,有問題歡迎隨時留言,也可以去MIMIC的官方Github上提出問題。

下期預告

下一篇文章,我們會開始,從臨床需求入手,介紹一些最簡單的查詢資料庫的語句,讓你開始真正享受到MIMIC的寶貴!

如果各位讀者遇到任何問題,歡迎大家在下方留言,我們會邀請作者解答可能遇到的問題。任何意見建議也請留言告訴我們。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 心血管筆記 的精彩文章:

TAG:心血管筆記 |