隨著市場和技術的發展,關系模型因其特有的原子性、一致性、隔離性和持久性優勢,取代了層次模型和網絡模型,成為了當代主流的數據模型。關系型數據庫建立在關系模型上,是多個關系(Relation)即二維表的集合。每個表有唯一的名字,表的每一行代表了一組值之間的聯系,稱為元組(Tuple),每一列是實體的描述,具有相同的數據類型,稱為屬性(Attribute)或者字段(Field)。為了唯一標識一張關系表,關系型數據庫選定主碼/鍵(Primary Key)來區分不同元組的候選碼;同時為了維護數據庫的完整性和數據的一致性,設置外碼/鍵(屬性)、參照關系(表)建立表之間的聯系。
查詢即向RBDMS尋求特定的信息,SQL(結構化查詢語言),是RBDMS的標準語言,廣泛應用于各主流關系型數據庫,它包括DDL(數據定義語言)、DML(數據操縱語言)、DCL(數據控制語言)和TCL(事務控制語言)。SQL作為一種聲明式語言,同時具有較好的可擴展性,不僅用于查詢,還可以用來定義數據結構、插入、修改和刪除數據、執行管理任務(安全、用戶管理……)等。
NoSQL即Not Only SQL,NoSQL數據庫指那些不使用關系模型、分布式、不保證遵循ACID原型的數據庫。關系型數據庫通過“強一致性”來避免數據庫應用中出現的寫入沖突(兩個客戶端同時修改一份數據)和讀寫沖突(某客戶端在另一個客戶端執行寫入操作過程中讀取數據)。“CAP定理”闡述了數據庫系統的權衡問題,即當有可能發生“網絡分區”時,必須在數據的“可用性”與“一致性”之間權衡。電商、社交網絡等場景的容錯度較高但需要實時可用,NoSQL數據庫由于只要求達到“最終一致性”,可以輕松處理海量數據并實現高用戶負載的擴展,在此類場景下應用較廣。