如何快速的瞭解某種資料庫

husthxd發表於2017-10-19

這段時間由於工作需要,接觸了多種資料庫。其中關係型資料庫包括:Oracle、DB2、Informix、Teradata、Netezza、MySQL、MS SQLServer、Sybase、PostgreSQL、Greenplum、浪潮KDB、達夢資料庫、華三MPP Data Engine、GBase、Hive等;NoSQL包括MongoDB、Redis、HBase、Cassandra等。那麼,如何快速的瞭解或者學習某種資料庫?大體可以透過資料庫儲存結構、資料庫邏輯概念和物件結構以及字符集這四個方面快速瞭解或掌握。

0x01 資料庫儲存結構

儲存結構,從儲存裝置上劃分,可以粗略的劃分為兩大類:永續性儲存(如硬碟、SSD等)和臨時性儲存(如記憶體),對應這兩類,資料庫儲存結構可以分為物理結構和記憶體結構。物理結構簡單來說就是在永續性儲存裝置上可見的、物理存在的檔案以及這些檔案的用處和相互依存關係,記憶體結構指的是在記憶體中存在的資料結構以及這些結構的用處和關係。

如Oracle,物理結構包括控制檔案、線上日誌檔案、資料檔案、引數檔案等;記憶體結構包括SGA、PGA等;

如Informix,物理結構包括資料檔案、配置檔案、物理日誌檔案等;記憶體結構包括共享記憶體端等;

如Sybase,物理結構包括裝置檔案、配置檔案、日誌檔案等;記憶體結構包括過程緩衝區、資料緩衝區等。

0x02 資料庫邏輯概念

資料庫邏輯概念,是對物理結構的邏輯封裝,透過增加一系列的概念,便於使用和管理資料庫。

如Oracle,表空間Tablespace用於管理物理儲存、Segment/Extend/Block用於管理資料儲存、User作為容器可用於許可權管理和資料庫物件儲存;

如Teradata,使用者User用於資料的儲存組織和許可權管理、資料庫DB在User下用於資料的劃分和組織等;

如DB2,表空間Tablespace用於物理儲存的管理、User用於許可權管理、Schema作為資料庫物件的儲存容器、BufferPool用於快取的管理等;

如Mongodb,資料庫DB用於儲存管理和資料組織、Collection類似資料表作為資料的儲存管理;

如Redis,Key/Value鍵值對,Key可以是根據業務意義自定義的資訊,Value可以為任意序列化後的二進位制資料或者更高階的Set/List等結構。

0x03 資料庫物件結構

資料庫物件,指的是資料庫Database、使用者User、模式Schema、資料表Table、索引Index、約束Constraint、觸發器Trigger、儲存過程Procedure等物件。透過了解資料庫物件結構,也就基本掌握如何透過DML運算元據庫了。

如Oracle,在同一臺主機上可以有N個資料庫,每個資料庫中可以有N個User(Schema),每個User下有N張表......,連線資料庫後可透過Username.Tablename訪問資料表。值得一提的是,在12.2+版本後,增加了所謂的ContainerDB,其實是在DB和User之間加了一層database,實現了類似SQLServer或者Sybase的物件結構;

如DB2,在同一臺主機上可以有N個資料庫,每個資料庫中可以有N個User,每個User下有N個Schema,每個Schema下有N張表......,可透過Schemaname.Tablename訪問資料表;

如MySQL,在同一臺主機上可以有N個DB Server,每個Server可以有N個DB,每個DB有N個Table,資料表可透過以下方式進行訪問:

       database <dbname>

       select * from <tablename>

如華三MPP Data Engine,資料庫物件結構基本與MySQL類似;

如MongoDB,在同一臺主機上可以有N個DB Server,每個Server可以有N個DB,每個DB有N個Collection,資料表可透過以下方式進行訪問:

       use <database>

       db.collectionname.find()

0x04 資料庫字符集

資料庫字符集,在先前文章已有介紹,不再詳述。

如Oracle,字符集有ZHS16GBK、AL32UTF8、WE8ISO8859P1等,其中ZHS(中文)/AL(所有)/WE(西歐)等表示語言,16/32/8表示字元儲存使用位元組數,最後一部分是實際的字符集。

如DB2 LUW,常用字符集有GBK、819(即ISO8859P1)、1208(即Unicode,使用UTF8編碼)

如Sybase,常用字符集有EUCGB(即GB2312)、CP850、GB18030、ISO_1(即ISO8859P1)、Roman8(在HP-UX下的預設字符集)

如MySQL,常用字符集有Latin1(即ISO8859P1)、UTF8、GBK

如Teradata,常用字符集有Latin、Unicode(使用UTF16編碼)

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/6906/viewspace-2374926/,如需轉載,請註明出處,否則將追究法律責任。

相關文章