簡介
數據庫是解決內存不足的另一方案,關系數據庫存儲一系列的表格,通過多個表格間的關系來提取與合并特定的信息。目前常用的關系數據庫是采用SQL語句,例如MySQL,PostgreSQL,SQLite等。它們的語法是相通的,由于SQLite不需要繁瑣的配置,這里我們著重介紹。
注意:小型、關系清晰、便于檢索展示的信息采用關系數據庫存儲更為合適,而原始數據及特定類型的數據(如VCF,BED等)使用相應的專業工具效率更高。
SQLite安裝
linux可以通過包管理工具直接安裝:
sudo apt install sqlite3
也支持通過源碼編譯安裝。
SQLite交互探索
SQLite通過命令行工具交互,首先連接數據庫(gwascat.db
為創建好的例子數據,例子數據下載):
$ sqlite3 gwascat.db
SQLite version 3.36.0 2021-06-18 18:36:39
Enter ".help" for usage hints.
sqlite>
通過點命令來進行管理,.table
命令可以查看當前數據庫內的表格:
sqlite> .table
gwascat
.schema
命令可以查看數據庫的架構:
sqlite> .schema
CREATE TABLE gwascat(
id integer PRIMARY KEY NOT NULL,
dbdate text,
pubmedid integer,
author text,
date text,
journal text,
link text,
study text,
trait text,
initial_samplesize text,
replication_samplesize text,
region text,
chrom text,
position integer,
...
以上信息包含了表格的字段名與數據類型(可以通過此命令創建相同表格)。
SQLite包括5種數據類型:
- 文本(Text);
- 整數(Integer);
- 實數(Real);
- 空(NULL),代表缺失值;
- 二進制文件(BLOB)
需要注意的是,SQLite雖然需要指明每列的數據類型,當你存入不同類型的數據時會進行隱式轉換預防信息丟失。不過還是建議系列使用相同的數據類型,下游處理的時候可以不需要再考慮數據類型的問題。
注意:MySQL與PostgreSQL有嚴格的數據類型。
其它常用的點命令與介紹如下表所示:
表1
下一節我們將重點介紹一下數據的查詢操作。