⑴ 技術選型 - OLAP大數據技術哪家強
Lambda架構的核心理念是「流批一體化」,因為隨著機器性能和數據框架的不斷完善,用戶其實不關心底層是如何運行的,批處理也好,流式處理也罷,能按照統一的模型返回結果就可以了,這就是Lambda架構誕生的原因。現在很多應用,例如Spark和Flink,都支持這種結構,也就是數據進入平台後,可以選擇批處理運行,也可以選擇流式處理運行,但不管怎樣,一致性都是相同的。
Kylin
Kylin的主要特點是預計算,提前計算好各個cube,這樣的優點是查詢快速,秒級延遲;缺點也非常明顯,靈活性不足,無法做一些 探索 式的,關聯性的數據分析。
適合的場景也是比較固定的,場景清晰的地方。
ClickHouse
Clickhouse由俄羅斯yandex公司開發。專為在線數據分析而設計。
Clickhouse最大的特點首先是快 ,為了快採用了列式儲存,列式儲存更好的支持壓縮,壓縮後的數據傳輸量變小,所以更快;同時支持分片,支持分布式執行,支持sql。
ClickHouse很輕量級,支持數據壓縮和最終數據一致性,其數據量級在PB級別。
另外Clickhouse不是為關聯分析而生,所以多表關聯支持的不太好。
同樣Clickhouse不能修改或者刪除數據,僅能用於批量刪除或修改。沒有完整的事務支持,不支持二級索引等等,缺點也非常明顯。
與Kylin相比ClickHouse更加的靈活,sql支持的更好,但是相比Kylin,ClickHouse不支持大並發,也就是不能很多訪問同時在線。
總之ClickHouse用於在線數據分析,支持功能簡單。CPU 利用率高,速度極快。最好的場景用於行為統計分析。
Hive
Hive這個工具,大家一定很熟悉,大數據倉庫的首選工具。可以將結構化的數據文件映射為一張資料庫表,並提供完整的sql查詢功能。
主要功能是可以將sql語句轉換為相對應的MapRece任務進行運行,這樣可能處理海量的數據批量,
Hive與HDFS結合緊密,在大數據開始初期,提供一種直接使用sql就能訪問HDFS的方案,擺脫了寫MapRece任務的方式,極大的降低了大數據的門檻。
當然Hive的缺點非常明顯,定義的是分鍾級別的查詢延遲,估計都是在比較理想的情況。 但是作為數據倉庫的每日批量工具,的確是一個穩定合格的產品。
Presto
Presto極大的改進了Hive的查詢速度,而且Presto 本身並不存儲數據,但是可以接入多種數據源,並且支持跨數據源的級聯查詢,支持包括復雜查詢、聚合、連接等等。
Presto沒有使用MapRece,它是通過一個定製的查詢和執行引擎來完成的。它的所有的查詢處理是在內存中,這也是它的性能很高的一個主要原因。
Presto由於是基於內存的,缺點可能是多張大表關聯操作時易引起內存溢出錯誤。
另外Presto不支持OLTP的場景,所以不要把Presto當做資料庫來使用。
Presto相比ClickHouse優點主要是多表join效果好。相比ClickHouse的支持功能簡單,場景支持單一,Presto支持復雜的查詢,應用范圍更廣。
Impala
Impala是Cloudera 公司推出,提供對 HDFS、Hbase 數據的高性能、低延遲的互動式 SQL 查詢功能。
Impala 使用 Hive的元數據, 完全在內存中計算。是CDH 平台首選的 PB 級大數據實時查詢分析引擎。
Impala 的缺點也很明顯,首先嚴重依賴Hive,而且穩定性也稍差,元數據需要單獨的mysql/pgsql來存儲,對數據源的支持比較少,很多nosql是不支持的。但是,估計是cloudera的國內市場推廣做的不錯,Impala在國內的市場不錯。
SparkSQL
SparkSQL的前身是Shark,它將 SQL 查詢與 Spark 程序無縫集成,可以將結構化數據作為 Spark 的 RDD 進行查詢。
SparkSQL後續不再受限於Hive,只是兼容Hive。
SparkSQL提供了sql訪問和API訪問的介面。
支持訪問各式各樣的數據源,包括Hive, Avro, Parquet, ORC, JSON, and JDBC。
Drill
Drill好像國內使用的很少,根據定義,Drill是一個低延遲的分布式海量數據互動式查詢引擎,支持多種數據源,包括hadoop,NoSQL存儲等等。
除了支持多種的數據源,Drill跟BI工具集成比較好。
Druid
Druid是專為海量數據集上的做高性能 OLAP而設計的數據存儲和分析系統。
Druid 的架構是 Lambda 架構,分成實時層和批處理層。
Druid的核心設計結合了數據倉庫,時間序列資料庫和搜索系統的思想,以創建一個統一的系統,用於針對各種用例的實時分析。Druid將這三個系統中每個系統的關鍵特徵合並到其接收層,存儲格式,查詢層和核心體系結構中。
目前 Druid 的去重都是非精確的,Druid 適合處理星型模型的數據,不支持關聯操作。也不支持數據的更新。
Druid最大的優點還是支持實時與查詢功能,解約了很多開發工作。
Ku
ku是一套完全獨立的分布式存儲引擎,很多設計概念上借鑒了HBase,但是又跟HBase不同,不需要HDFS,通過raft做數據復制;分片策略支持keyrange和hash等多種。
數據格式在parquet基礎上做了些修改,支持二級索引,更像一個列式存儲,而不是HBase schema-free的kv方式。
ku也是cloudera主導的項目,跟Impala結合比較好,通過impala可以支持update操作。
ku相對於原有parquet和ORC格式主要還是做增量更新的。
Hbase
Hbase使用的很廣,更多的是作為一個KV資料庫來使用,查詢的速度很快。
Hawq
Hawq是一個Hadoop原生大規模並行SQL分析引擎,Hawq採用 MPP 架構,改進了針對 Hadoop 的基於成本的查詢優化器。
除了能高效處理本身的內部數據,還可通過 PXF 訪問 HDFS、Hive、HBase、JSON 等外部數據源。HAWQ全面兼容 SQL 標准,還可用 SQL 完成簡單的數據挖掘和機器學習。無論是功能特性,還是性能表現,HAWQ 都比較適用於構建 Hadoop 分析型數據倉庫應用。
⑵ 什麼是知識庫如何管理知識庫
企業知識庫(Corporate knowledge base)是企業中形成結構化、易操作、易利用、易儲存、可傳承的知識集群,這些知識不僅包括企業的宏觀發展規劃、企業文化等,也包含微觀的各個部門的一切知識內容,如:培訓資料、學習資料、客戶資料、市場資料等等很多方面。同時與領域相關的理論知識、事實數據、市場動態新聞等知識,都在其內容之內。
企業知識庫的作用
1.將分散的企業知識集中收集,便於知識隨時查閱
知識庫的建立使得大量的知識/文檔可信息化、有序化、規范化,為日後知識的使用奠定良好的基礎。
2.知識庫加快了知識的流動有利於知識共享和交流
知識和信息有序化編輯、歸類後,方便搜索,提升了利用效率,也便自然加快了知識的流動。
3.利用成功經驗和案例讓業務開展和客戶服務更高效
企業員工通過學習知識庫中項目經驗以及知識,幫助其更好地融入工作,提升工作能力。
四步教你搭建一個有效的知識庫
1.確定使用目標,搭建有效知識庫
不同用戶有不同的使用需求,根據不同用戶的具體問題,確定知識庫性質;
使用預定義模板,保持信息和設計的一致性。
2.定義審批流程,發送終端用戶
通過實施審批流程,確保知識庫內容的可靠性。例如此流程:技術員→領域解決方案專家→知識庫經理;
待解決方案批准後,將其發送給終端用戶。
3.提升搜索性能,增加用戶體驗
通過適當的關鍵字標記知識庫文章,實現最優的的知識庫搜索性能,提升用戶滿意度;
將每篇文章分類到特定的主題下,結構清晰化。
4.知識庫文章管理,注重維護
確保技術員可以將已更新的文章恢復到早期版本以備不時之需,從而保持知識庫內容更新過程的靈活性;
定期備份知識庫,經常維護知識庫內容;
通過查看針對知識庫性能和使用情況的定期報表,時刻監控掌握知識庫的性能。
知識庫搭建工具
Baklib能進行在線知識庫搭建,其高效的編輯功能、集中的在線存儲、展示能力,解決了企業有效知識庫搭建的問題,幫助解決在工作過程中文檔管理混亂、知識孤立等問題;降低成本的同時、全面提升個人與團隊工作效率、高效的管理使辦公更輕松。
⑶ MySQL與PostgreSQL相比哪個更好
MySQL
MySQL聲稱自己是最流行的開源資料庫。LAMP中的M指的就是MySQL。構建在LAMP上的應用都會使用MySQL,如WordPress、Drupal等大多數php開源程序。MySQL最初是由MySQL AB開發的,然後在2008年以10億美金的價格賣給了Sun公司,Sun公司又在2010年被Oracle收購。Oracle支持MySQL的多個版本:Standard、Enterprise、Classic、Cluster、Embedded與Community。其中有一些是免費下載的,另外一些則是收費的。其核心代碼基於GPL許可,由於MySQL被控制在Oracle,社區擔心會對MySQL的開源會有影響,所以開發了一些分支,比如: MariaDB和Percona。
PostgreSQL
PostgreSQL標榜自己是世界上最先進的開源資料庫。PostgreSQL的一些粉絲說它能與Oracle相媲美,而且沒有那麼昂貴的價格和傲慢的客服。最初是1985年在加利福尼亞大學伯克利分校開發的,作為Ingres資料庫的後繼。PostgreSQL是完全由社區驅動的開源項目。它提供了單個完整功能的版本,而不像MySQL那樣提供了多個不同的社區版、商業版與企業版。PostgreSQL基於自由的BSD/MIT許可,組織可以使用、復制、修改和重新分發代碼,只需要提供一個版權聲明即可。
MySQL與PostgreSQL的對比
MySQL的背後是一個成熟的商業公司,而PostgreSQL的背後是一個龐大的志願開發組。這使得MySQL的開發過程更為慎重,而PostgreSQL的反應更為迅速。這樣的兩種背景直接導致了各自固有的優點和缺點。
PostgreSQL相對於MySQL的優勢
1)不僅僅是關系型資料庫
除了存儲正常的數據類型外,還支持存儲:
array,不管是一位數組還是多為數組均支持
json(hStore)和jsonb,相比使用text存儲接送要高效很多
json和jsonb之間的區別
jsonb和json在更高的層面上看起來幾乎是一樣的,但在存儲實現上是不同的。
json存儲完的文本,json列會每次都解析存儲的值,它不支持索引,但你可以為查詢創建表達式索引。
jsonb存儲的二進制格式,避免了重新解析數據結構。它支持索引,這意味著你可以不使用指定的索引就能查詢任何路徑。
當我們比較寫入數據速度時,由於數據存儲的方式的原因,jsonb會比json稍微的慢一點。json列會每次都解析存儲的值,這意味著鍵的順序要和輸入的時候一樣。但jsonb不同,以二進制格式存儲且不保證鍵的順序。因此,如果你有軟體需要依賴鍵的順序,jsonb可能不是你的應用的最佳選擇。使用jsonb的優勢還在於你可以輕易的整合關系型數據和非關系型數據, PostgreSQL對於mongodb這類的基於文檔的資料庫是個不小的威脅,畢竟如果一個表中只有一列數據的類型是半結構化的,沒有必要為了遷就它而整個表的設計採用schemaless的結構。
2)支持地理信息處理擴展
PostGIS 為PostgreSQL提供了存儲空間地理數據的支持,使PostgreSQL成為了一個空間資料庫,能夠進行空間數據管理、數量測量與幾何拓撲分析。在功能上,和MYSQL對比,PostGIS具有下列優勢:
O2O業務場景中的LBS業務使用PostgreSQL + PostGIS有無法比擬的優勢。
3)可以快速構建REST API
PostgREST 可以方便的為任何 PostgreSQL 資料庫提供完全的 RESTful API 服務。
4)支持樹狀結構
支持R-trees這樣可擴展的索引類型,可以更方便地處理一些特殊數據。MySQL 處理樹狀的設計會很復雜, 而且需要寫很多代碼, 而 PostgreSQL 可以高效處理樹結構。
5)有極其強悍的 SQL 編程能力
支持遞歸,有非常豐富的統計函數和統計語法支持。
MySQL:支持 CREATE PROCEDURE 和 CREATE FUNCTION 語句。存儲過程可以用 SQL 和 C++ 編寫。用戶定義函數可以用 SQL、C 和 C++ 編寫。
PostgreSQL:沒有單獨的存儲過程,都是通過函數實現的。用戶定義函數可以用 PL/pgSQL(專用的過程語言)、PL/Tcl、PL/Perl、PL/Python 、SQL 和 C 編寫。
6)外部數據源支持
可以把 70 種外部數據源 (包括 Mysql, Oracle, CSV, hadoop …) 當成自己資料庫中的表來查詢。Postgres有一個針對這一難題的解決方案:一個名為「外部數據封裝器(Foreign Data Wrapper,FDW)」的特性。該特性最初由PostgreSQL社區領袖Dave Page四年前根據SQL標准SQL/MED(SQL Management of External Data)開發。FDW提供了一個SQL介面,用於訪問遠程數據存儲中的遠程大數據對象,使DBA可以整合來自不相關數據源的數據,將它們存入Postgres資料庫中的一個公共模型。這樣,DBA就可以訪問和操作其它系統管理的數據,就像在本地Postgres表中一樣。例如,使用FDW for MongoDB,資料庫管理員可以查詢來自文檔資料庫的數據,並使用SQL將它與來自本地Postgres表的數據相關聯。藉助這種方法,用戶可以將數據作為行、列或JSON文檔進行查看、排序和分組。他們甚至可以直接從Postgres向源文檔資料庫寫入(插入、更細或刪除)數據,就像一個一體的無縫部署。也可以對Hadoop集群或MySQL部署做同樣的事。FDW使Postgres可以充當企業的中央聯合資料庫或「Hub」。
7)沒有字元串長度限制
一般關系型資料庫的字元串有限定長度8k左右,無限長 TEXT 類型的功能受限,只能作為外部大數據訪問。而PostgreSQL的 TEXT 類型可以直接訪問,SQL語法內置正則表達式,可以索引,還可以全文檢索,或使用xml xpath。MySQL 的各種text欄位有不同的限制,要手動區分 small text, middle text, large text… PostgreSQL 沒有這個限制,text 能支持各種大小。
8)支持圖結構數據存儲
沒有具體使用過,具體可以自己搜索下。參考鏈接:https://mp.weixin.qq.com/s/cjor82wgDu5gzDvTYpLDWw
9)支持窗口函數
窗口函數提供跨行相關的當前查詢行集執行計算的能力。僅當調用跟著OVER子句的聚集函數,作為窗口函數;否則它們作為常規的聚合函數。窗口也是一種分組,但和 group by 的分組不同。窗口,可以提供分組之外,還可以執行對每個窗口進行計算。可以相像成是group by 後,然後對每個分組進行計算,而不像Group by ,只是單純地分組。MySQL 不支持 OVER 子句, 而PostgreSQL支持。OVER 子句能簡單的解決 「每組取 top 5」 的這類問題。MySQL支持的SQL語法(ANSI SQL標准)的很小一部分。不支持遞歸查詢、通用表表達式(Oracle的with 語句)或者窗口函數(分析函數)。
10)對索引的支持更強
PostgreSQL 的可以使用函數和條件索引,這使得PostgreSQL資料庫的調優非常靈活,mysql就沒有這個功能,條件索引在web應用中很重要。對於索引類型:
MySQL:取決於存儲引擎。MyISAM:BTREE,InnoDB:BTREE。
PostgreSQL:支持 B-樹、哈希、R-樹和 Gist 索引。
InnoDB的表和索引都是按相同的方式存儲。也就是說表都是索引組織表。這一般要求主鍵不能太長而且插入時的主鍵最好是按順序遞增,否則對性能有很大影響。PostgreSQL不存在這個問題。
索引類型方面,MySQL取決於存儲引擎。MyISAM:BTREE,InnoDB:BTREE。PostgreSQL支持 B-樹、哈希、R-樹和 Gist 索引。
11)集群支持更好
Mysql Cluster可能與你的想像有較大差異。開源的cluster軟體較少。復制(Replication)功能是非同步的並且有很大的局限性。例如,它是單線程的(single-threaded),因此一個處理能力更強的Slave的恢復速度也很難跟上處理能力相對較慢的Master。
PostgreSQL有豐富的開源cluster軟體支持。plproxy 可以支持語句級的鏡像或分片,slony 可以進行欄位級的同步設置,standby 可以構建WAL文件級或流式的讀寫分離集群,同步頻率和集群策略調整方便,操作非常簡單。
另外,PostgreSQL的主備復制屬於物理復制,相對於MySQL基於binlog的邏輯復制,數據的一致性更加可靠,復制性能更高,對主機性能的影響也更小。對於WEB應用來說,復制的特性很重要,mysql到現在也是非同步復制,pgsql可以做到同步,非同步,半同步復制。還有mysql的同步是基於binlog復制,類似oracle golden gate,是基於stream的復制,做到同步很困難,這種方式更加適合異地復制,pgsql的復制基於wal,可以做到同步復制。同時,pgsql還提供stream復制。
12)事務隔離做的更好
MySQL 的事務隔離級別 repeatable read 並不能阻止常見的並發更新, 得加鎖才可以, 但悲觀鎖會影響性能, 手動實現樂觀鎖又復雜. 而 PostgreSQL 的列里有隱藏的樂觀鎖 version 欄位, 默認的 repeatable read 級別就能保證並發更新的正確性, 並且又有樂觀鎖的性能。
13)對於字元支持更好一些
MySQL 里需要 utf8mb4 才能顯示 emoji 的坑, PostgreSQL 沒這個坑。
14)對表連接支持較完整
對表連接支持較完整,MySQL只有一種表連接類型:嵌套循環連接(nested-loop),不支持排序-合並連接(sort-merge join)與散列連接(hash join)。PostgreSQL都支持。
15)存儲方式支持更大的數據量
PostgreSQL主表採用堆表存放,MySQL採用索引組織表,能夠支持比MySQL更大的數據量。
16)時間精度更高
MySQL對於時間、日期、間隔等時間類型沒有秒以下級別的存儲類型,而PostgreSQL可以精確到秒以下。
17)優化器的功能較完整
MySQL對復雜查詢的處理較弱,查詢優化器不夠成熟,explain看執行計劃的結果簡單。性能優化工具與度量信息不足。
PostgreSQL很強大的查詢優化器,支持很復雜的查詢處理。explain返回豐富的信息。提供了一些性能視圖,可以方便的看到發生在一個表和索引上的select、delete、update、insert統計信息,也可以看到cache命中率。網上有一個開源的pgstatspack工具。
18)序列支持更好
MySQL 不支持多個表從同一個序列中取 id, 而 PostgreSQL 可以。
19)對子查詢支持更好
對子查詢的支持。雖然在很多情況下在SQL語句中使用子查詢效率低下,而且絕大多數情況下可以使用帶條件的多表連接來替代子查詢,但是子查詢的存在在很多時候仍然不可避免。而且使用子查詢的SQL語句與使用帶條件的多表連接相比具有更高的程序可讀性。幾乎任何資料庫的子查詢 (subquery) 性能都比 MySQL 好。
20)增加列更加簡單
MySQL表增加列,基本上是重建表和索引,會花很長時間。PostgreSQL表增加列,只是在數據字典中增加表定義,不會重建表.
MySQL相對於PostgreSQL的優勢
1)MySQL比PostgreSQL更流行
流行對於一個商業軟體來說,也是一個很重要的指標,流行意味著更多的用戶,意味著經受了更多的考驗,意味著更好的商業支持、意味著更多、更完善的文檔資料。易用,很容易安裝。第三方工具,包括可視化工具,讓用戶能夠很容易入門。
2)回滾實現更優
innodb的基於回滾段實現的MVCC機制,相對PG新老數據一起存放的基於XID的MVCC機制,是占優的。新老數據一起存放,需要定時觸發VACUUM,會帶來多餘的IO和資料庫對象加鎖開銷,引起資料庫整體的並發能力下降。而且VACUUM清理不及時,還可能會引發數據膨脹。
3)在Windows上運行更可靠
與PostgreSQL相比,MySQL更適宜在Windows環境下運行。MySQL作為一個本地的Windows應用程序運行(在 NT/Win2000/WinXP下,是一個服務),而PostgreSQL是運行在Cygwin模擬環境下。PostgreSQL在Windows下運行沒有MySQL穩定,應該是可以想像的。
4)線程模式相比進程模式的優勢
MySQL使用了線程,而PostgreSQL使用的是進程。在不同線程之間的環境轉換和訪問公用的存儲區域顯然要比在不同的進程之間要快得多。
進程模式對多CPU利用率比較高。進程模式共享數據需要用到共享內存,而線程模式數據本身就是在進程空間內都是共享的,不同線程訪問只需要控制好線程之間的同步。
線程模式對資源消耗比較少。所以MySQL能支持遠比PostgreSQL多的更多的連接。但PostgreSQL中有優秀的連接池軟體軟體,如pgbouncer和pgpool,所以通過連接池也可以支持很多的連接。
5)許可權設置上更加完善
MySQL在許可權系統上比PostgreSQL某些方面更為完善。PostgreSQL只支持對於每一個用戶在一個資料庫上或一個數據表上的 INSERT、SELECT和UPDATE/DELETE的授權,而MySQL允許你定義一整套的不同的數據級、表級和列級的許可權。對於列級的許可權, PostgreSQL可以通過建立視圖,並確定視圖的許可權來彌補。MySQL還允許你指定基於主機的許可權,這對於目前的PostgreSQL是無法實現的,但是在很多時候,這是有用的。
6)存儲引擎插件化機制
MySQL的存儲引擎插件化機制,使得它的應用場景更加廣泛,比如除了innodb適合事務處理場景外,myisam適合靜態數據的查詢場景。
7)適應24/7運行
MySQL可以適應24/7運行。在絕大多數情況下,你不需要為MySQL運行任何清除程序。PostgreSQL目前仍不完全適應24/7運行,這是因為你必須每隔一段時間運行一次VACUUM。
8)更加試用於簡單的場景
PostgreSQL只支持堆表,不支持索引組織表,Innodb只支持索引組織表。
索引組織表的優勢:表內的數據就是按索引的方式組織,數據是有序的,如果數據都是按主鍵來訪問,那麼訪問數據比較快。而堆表,按主鍵訪問數據時,是需要先按主鍵索引找到數據的物理位置。
索引組織表的劣勢:索引組織表中上再加其它的索引時,其它的索引記錄的數據位置不再是物理位置,而是主鍵值,所以對於索引組織表來說,主鍵的值不能太大,否則佔用的空間比較大。
對於索引組織表來說,如果每次在中間插入數據,可能會導致索引分裂,索引分裂會大大降低插入的性能。所以對於使用innodb來說,我們一般最好讓主鍵是一個無意義的序列,這樣插入每次都發生在最後,以避免這個問題。
由於索引組織表是按一個索引樹,一般它訪問數據塊必須按數據塊之間的關系進行訪問,而不是按物理塊的訪問數據的,所以當做全表掃描時要比堆錶慢很多,這可能在OLTP中不明顯,但在數據倉庫的應用中可能是一個問題。
總結
MySQL從一開始就沒有打算做所有事情,因而它在功能方面有一定的局限性,並不能滿足一些先進應用程序的要求。MySQL對某些功能(例如引用、事務、審計等)的實現方式使得它與其他的關系型資料庫相比缺少了一些可靠性。對於簡單繁重的讀取操作,使用PostgreSQL可能有點小題大做,同時性能也比MySQL這樣的同類產品要差。除非你需要絕對的數據完整性,ACID遵從性或者設計復雜,否則PostgreSQL對於簡單的場景而言有點多餘。
如何你確定只在MySQL和PostgreSQL中進行選擇,以下規則總是有效的:
如果你的操作系統是Windows,你應該使用MySQL。
當絕對需要可靠性和數據完整性的時候,PostgreSQL是更好的選擇。
如果需要資料庫執行定製程序,那麼可擴展的PostgreSQL是更好的選擇。
你的應用處理的是地理數據,由於R-TREES的存在,你應該使用PostgreSQL。
如果你對資料庫並不了十分了解,甚至不知道事務、存儲過程等究竟是什麼,你應該使用MySQL。
⑷ 2019數據架構選型必讀:1月資料庫產品技術解析
本期目錄
DB-Engines資料庫排行榜
新聞快訊
一、RDBMS家族
二、NoSQL家族
三、NewSQL家族
四、時間序列
五、大數據生態圈
六、國產資料庫概覽
七、雲資料庫
八、推出dbaplus Newsletter的想法
九、感謝名單
為方便閱讀、重點呈現,本期Newsletter(2019年1月)將對各個板塊的內容進行精簡。需要閱讀全文的同學可點擊文末 【閱讀原文】 或登錄https://pan..com/s/13BgipbaHeMfvm0YPtiYviA
DB-Engines資料庫排行榜
以下取自2019年1月的數據,具體信息可以參考http://db-engines.com/en/ranking/,數據僅供參考。
DB-Engines排名的數據依據5個不同的因素:
新聞快訊
1、2018年9月24日,微軟公布了SQL Server2019預覽版,SQL Server 2019將結合Spark創建統一數據平台。
2、2018年10月5日,ElasticSearch在美國紐約證券交易所上市。
3、亞馬遜放棄甲骨文資料庫軟體,導致最大倉庫之一在黃金時段宕機。受此消息影響,亞馬遜盤前股價小幅跳水,跌超2%。
4、2018年10月31日,Percona發布了Percona Server 8.0 RC版本,發布對MongoDB 4.0的支持,發布對XtraBackup測試第二個版本。
5、2018年10月31日,Gartner陸續發布了2018年的資料庫系列報告,包括《資料庫魔力象限》、《資料庫核心能力》以及《資料庫推薦報告》。
今年的總上榜資料庫產品達到了5家,分別來自:阿里雲,華為,巨杉資料庫,騰訊雲,星環 科技 。其中阿里雲和巨杉資料庫已經連續兩年入選。
6、2018年11月初,Neo4j宣布完成E輪8000萬美元融資。11月15日,Neo4j宣布企業版徹底閉源:
7、2019年1月8日,阿里巴巴以1.033億美元(9000萬歐元)的價格收購了Apache Flink商業公司DataArtisans。
8、2019年1月11日早間消息,亞馬遜宣布推出雲資料庫軟體,亞馬遜和MongoDB將會直接競爭。
RDBMS家族
Oracle 發布18.3版本
2018年7月,Oracle Database 18.3通用版開始提供下載。我們可以將Oracle Database 18c視為採用之前發布模式的Oracle Database 12c第2版的第一個補丁集。未來,客戶將不再需要等待多年才能用上最新版Oracle資料庫,而是每年都可以期待新資料庫特性和增強。Database 19c將於2019年Q1率先在Oracle cloud上發布雲版本。
Oracle Database 18c及19c部分關鍵功能:
1、性能
2、多租戶,大量功能增強及改進,大幅節省成本和提高敏捷性
3、高可用
4、數據倉庫和大數據
MySQL發布8.0.13版本
1、賬戶管理
經過配置,修改密碼時,必須帶上原密碼。在之前的版本,用戶登錄之後,就可以修改自己的密碼。這種方式存在一定安全風險。比如用戶登錄上資料庫後,中途離開一段時間,那麼非法用戶可能會修改密碼。由參數password_require_current控制。
2、配置
Innodb表必須有主鍵。在用戶沒有指定主鍵時,系統會生成一個默認的主鍵。但是在主從復制的場景下,默認的主鍵,會對叢庫應用速度帶來致命的影響。如果設置sql_require_primary_key,那麼資料庫會強制用戶在創建表、修改表時,加上主鍵。
3、欄位默認值
BLOB、TEXT、GEOMETRY和JSON欄位可以指定默認值了。
4、優化器
1)Skip Scan
非前綴索引也可以用了。
之前的版本,任何沒有帶上f1欄位的查詢,都沒法使用索引。在新的版本中,它可以忽略前面的欄位,讓這個查詢使用到索引。其實現原理就是把(f1 = 1 AND f2 > 40) 和(f1 = 2 AND f2 > 40)的查詢結果合並。
2)函數索引
之前版本只能基於某個列或者多個列加索引,但是不允許在上面做計算,如今這個限制消除了。
5、SQL語法
GROUP BY ASC和GROUP BY DESC語法已經被廢棄,要想達到類似的效果,請使用GROUP BY ORDER BY ASC和GROUP BY ORDER BY DESC。
6、功能變化
1)設置用戶變數,請使用SET語句
如下類型語句將要被廢棄SELECT @var, @var:=@var+1。
2)新增innodb_fsync_threshold
該變數是控制文件刷新到磁碟的速率,防止磁碟在短時間內飽和。
3)新增會話級臨時表空間
在以往的版本中,當執行SQL時,產生的臨時表都在全局表空間ibtmp1中,及時執行結束,臨時表被釋放,空間不會被回收。新版本中,會為session從臨時表空間池中分配一個臨時表空間,當連接斷開時,臨時表空間的磁碟空間被回收。
4)在線切換Group Replication的狀態
5)新增了group_replication_member_expel_timeout
之前,如果某個節點被懷疑有問題,在5秒檢測期結束之後,那麼就直接被驅逐出這個集群。即使該節點恢復正常時,也不會再被加入集群。那麼,瞬時的故障,會把某些節點驅逐出集群。
group_replication_member_expel_timeout讓管理員能更好的依據自身的場景,做出最合適的配置(建議配置時間小於一個小時)。
MariaDB 10.3版本功能展示
1、MariaDB 10.3支持update多表ORDER BY and LIMIT
1)update連表更新,limit語句
update t1 join t2 on t1.id=t2.id set t1.name='hechunyang' limit 3;
MySQL 8.0直接報錯
MariaDB 10.3更新成功
2)update連表更新,ORDER BY and LIMIT語句
update t1 join t2 on t1.id=t2.id set t1.name='HEchunyang' order by t1.id DESC limit 3;
MySQL 8.0直接報錯
MariaDB 10.3更新成功
參考:
https://jira.mariadb.org/browse/MDEV-13911
2、MariaDB10.3增補AliSQL補丁——安全執行Online DDL
Online DDL從名字上看很容易誤導新手,以為不論什麼情況,修改表結構都不會鎖表,理想很豐滿,現實很骨感,注意這個坑!
有以下兩種情況執行DDL操作會鎖表的,Waiting for table metadata lock(元數據表鎖):
針對第二種情況,MariaDB10.3增補AliSQL補丁-DDL FAST FAIL,讓其DDL操作快速失敗。
例:
如果線上有某個慢SQL對該表進行操作,可以使用WAIT n(以秒為單位設置等待)或NOWAIT在語句中顯式設置鎖等待超時,在這種情況下,如果無法獲取鎖,語句將立即失敗。 WAIT 0相當於NOWAIT。
參考:
https://jira.mariadb.org/browse/MDEV-11388
3、MariaDB Window Functions窗口函數分組取TOP N記錄
窗口函數在MariaDB10.2版本里實現,其簡化了復雜SQL的撰寫,提高了可讀性。
參考:
https://mariadb.com/kb/en/library/window-functions-overview/
Percona Server發布8.0 GA版本
2018年12月21日,Percona發布了Percona Server 8.0 GA版本。
在支持MySQL8.0社區的基礎版上,Percona Server for MySQL 8.0版本中帶來了許多新功能:
1、安全性和合規性
2、性能和可擴展性
3、可觀察性和可用性
Percona Server for MySQL 8.0中將要被廢用功能:
Percona Server for MySQL 8.0中刪除的功能:
RocksDB發布V5.17.2版本
2018年10月24日,RocksDB發布V5.17.2版本。
RocksDB是Facebook在LevelDB基礎上用C++寫的高效內嵌式K/V存儲引擎。相比LevelDB,RocksDB提供了Column-Family,TTL,Transaction,Merge等方面的支持。目前MyRocks,TiKV等底層的存儲都是基於RocksDB來構建。
PostgreSQL發布11版本
2018年10月18日,PostgreSQL 11發布。
1、PostgreSQL 11的重大增強
2、PostgreSQL 插件動態
1)分布式插件citus發布 8.1
citus是PostgreSQL的一款sharding插件,目前國內蘇寧、鐵總、探探有較大量使用案例。
https://github.com/citusdata/citus
2)地理信息插件postgis發布2.5.1
PostGIS是專業的時空資料庫插件,在測繪、航天、氣象、地震、國土資源、地圖等時空專業領域應用廣泛。同時在互聯網行業也得到了對GIS有性能、功能深度要求的客戶青睞,比如共享出行、外賣等客戶。
http://postgis.net/
3)時序插件timescale發布1.1.1
timescale是PostgreSQL的一款時序資料庫插件,在IoT行業中有非常好的應用。github star數目前有5000多,是一個非常火爆的插件。
https://github.com/timescale/timescaledb
4)流計算插件 pipelinedb 正式插件化
Pipelinedb是PostgreSQL的一款流計算插件,使用這個創建可以對高速寫入的數據進行實時根據定義的聚合規則進行聚合(支持概率計算),實時根據定義的規則觸發事件(支持事件處理函數的自定義)。可用於IoT,監控,FEED實時計算等場景。
https://github.com/pipelinedb/pipelinedb
3、PostgreSQL衍生開源產品動態
1)agensgraph發布 2.0.0版本
agensgraph是兼容PostgreSQL、opencypher的專業圖資料庫,適合圖式關系的管理。
https://github.com/bitnine-oss/agensgraph
2)gpdb發布5.15
gpdb是兼容PostgreSQL的mpp資料庫,適合OLAP場景。近兩年,gpdb一直在追趕PostgreSQL的社區版本,預計很快會追上10的PostgreSQL,在TP方面的性能也會得到顯著提升。
https://github.com/greenplum-db/gpdb
3)antdb發布3.2
antdb是以Postgres-XC為基礎開發的一款PostgreSQL sharding資料庫,亞信主導開發,開源,目前主要服務於亞信自有客戶。
https://github.com/ADBSQL/AntDB
4)遷移工具MTK發布52版本
MTK是EDB提供的可以將Oracle、PostgreSQL、MySQL、MSSQL、Sybase資料庫遷移到PostgreSQL, PPAS的產品,遷移速度可以達到100萬行/s以上。
https://github.com/digoal/blog/blob/master/201812/20181226_01.md
DB2發布 11.1.4.4版本
DB2最新發布Mod Pack 4 and Fix Pack 4,包含以下幾方面的改動及增強:
1、性能
2、高可用
3、管理視圖
4、應用開發方面
5、聯邦功能
6、pureScale
NoSQL家族
Redis發布5.0.3版本
MongoDB升級更新MongoDB Mobile和MongoDB Stitch
2018年11月21日,MongoDB升級更新MongoDB Mobile和MongoDB Stitch,助力開發人員提升工作效率。
MongoDB 公司日前發布了多項新產品功能,旨在更好地幫助開發人員在世界各地管理數據。通過利用存儲在移動設備和後台資料庫的數據之間的實時、自動的同步特性,MongoDB Mobile通用版本助力開發人員構建更快捷、反應更迅速的應用程序。此前,這只能通過在移動應用內部安裝一個可供選擇或限定功能的資料庫來實現。
MongoDB Mobile在為客戶提供隨處運行的自由度方面更進了一步。用戶在iOS和安卓終端設備上可擁有MongoDB所有功能,將網路邊界擴展到其物聯網資產范疇。應用系統還可以使用MongoDB Stitch的軟體開發包訪問移動客戶端或後台數據,幫助開發人員通過他們希望的任意方式查詢移動終端數據和物聯網數據,包括本地讀寫、本地JSON存儲、索引和聚合。通過Stitch移動同步功能(現可提供beta版),用戶可以自動對保存在本地的數據以及後台資料庫的數據進行同步。
本期新秀:Cassandra發布3.11.3版本
2018年8月11日,Cassandra發布正式版3.11.3。
Apache Cassandra是一款開源分布式NoSQL資料庫系統,使用了基於Google BigTable的數據模型,與面向行(row)的傳統關系型資料庫或鍵值存儲key-value資料庫不同,Cassandra使用的是寬列存儲模型(Wide Column Stores)。與BigTable和其模仿者HBase不同,數據並不存儲在分布式文件系統如GFS或HDFS中,而是直接存於本地。
Cassandra的系統架構與Amazon DynamoDB類似,是基於一致性哈希的完全P2P架構,每行數據通過哈希來決定應該存在哪個或哪些節點中。集群沒有master的概念,所有節點都是同樣的角色,徹底避免了整個系統的單點問題導致的不穩定性,集群間的狀態同步通過Gossip協議來進行P2P的通信。
3.11.3版本的一些bug fix和改進:
NewSQL家族
TiDB 發布2.1.2版本
2018 年 12 月 22 日,TiDB 發布 2.1.2 版,TiDB-Ansible 相應發布 2.1.2 版本。該版本在 2.1.1 版的基礎上,對系統兼容性、穩定性做出了改進。
TiDB 是一款定位於在線事務處理/在線分析處理( HTAP: Hybrid Transactional/Analytical Processing)的融合型資料庫產品。除了底層的 RocksDB 存儲引擎之外,分布式SQL層、分布式KV存儲引擎(TiKV)完全自主設計和研發。
TiDB 完全開源,兼容MySQL協議和語法,可以簡單理解為一個可以無限水平擴展的MySQL,並且提供分布式事務、跨節點 JOIN、吞吐和存儲容量水平擴展、故障自恢復、高可用等優異的特性;對業務沒有任何侵入性,簡化開發,利於維護和平滑遷移。
TiDB:
PD:
TiKV:
Tools:
1)TiDB-Lightning
2)TiDB-Binlog
EsgynDB發布R2.5版本
2018年12月22日,EsgynDB R2.5版本正式發布。
作為企業級產品,EsgynDB 2.5向前邁進了一大步,它擁有以下功能和改進:
CockroachDB發布2.1版本
2018年10月30日,CockroachDB正式發布2.1版本,其新增特性如下:
新增企業級特性:
新增SQL特性:
新增內核特性:
Admin UI增強:
時間序列
本期新秀:TimescaleDB發布1.0版本
10月底,TimescaleDB 1.0宣布正式推出,官方表示該版本已可用於生產環境,支持完整SQL和擴展。
TimescaleDB是基於PostgreSQL資料庫開發的一款時序資料庫,以插件化的形式打包提供,隨著PostgreSQL的版本升級而升級,不會因為另立分支帶來麻煩。
TimescaleDB架構:
數據自動按時間和空間分片(chunk)
更新亮點:
https://github.com/timescale/timescaledb/releases/tag/1.0.0
大數據生態圈
Hadoop發布2.9.2版本
2018年11月中旬,Hadoop在2.9分支上發布了新的2.9.2版本,該版本進行了204個大大小小的變更,主要變更如下:
Greenplum 發布5.15版本
Greenplum最新的5.15版本中發布了流式數據載入工具。
該版本中的Greenplum Streem Server組件已經集成了Kafka流式載入功能,並通過了Confluent官方的集成認證,其支持的主要功能如下:
國產資料庫概覽
K-DB發布資料庫一體機版
2018年11月7日,K-DB發布了資料庫一體機版。該版本更新情況如下:
OceanBase遷移服務發布1.0版本
1月4日,OceanBase 正式發布OMS遷移服務1.0版本。
以下內容包含 OceanBase 遷移服務的重要特性和功能:
SequoiaDB發布3.0.1新版本
1、架構
1)完整計算存儲分離架構,兼容MySQL協議、語法
計算存儲分離體系以松耦合的方式將計算與存儲層分別部署,通過標准介面或插件對各個模塊和組件進行無縫替換,在計算層與存儲層均可實現自由的彈性伸縮。
SequoiaDB巨杉資料庫「計算-存儲分離」架構詳細示意
用戶可以根據自身業務特徵選擇面向交易的SQL解析器(例如MySQL或PGSQL)或面向統計分析的執行引擎(例如SparkSQL)。眾所周知,使用不同的SQL優化與執行方式,資料庫的訪問性能可能會存在上千上萬倍的差距。計算存儲分離的核心思想便是在數據存儲層面進行一體化存儲,在計算層面則利用每種執行引擎的特點針對不同業務場景進行選擇和優化,用戶可以在存儲層進行邏輯與物理的隔離,將面向高頻交易的前端業務與面向高吞吐量的統計分析使用不同的硬體進行存儲,確保在多類型數據訪問時互不幹擾,以真正達到生產環境可用的多租戶與HTAP能力。
2、其他更新信息
1)介面變更:
2)主要特性:
雲資料庫
本期新秀:騰訊發布資料庫CynosDB,開啟公測
1、News
1)騰訊雲資料庫MySQL2018年重大更新:
2)騰訊雲資料庫MongoDB2018年重大更新:
3)騰訊雲資料庫Redis/CKV+2018年重大更新:
4)騰訊雲資料庫CTSDB2018年重大更新:
2、Redis 4.0集群版商業化上線
2018年10月,騰訊雲資料庫Redis 4.0集群版完成邀測、公測、商業化三個迭代,在廣州、上海、北京正式全量商業化上線。
產品特性:
使用場景:
官網文檔:
https://cloud.tencent.com/document/proct/239/18336
3、騰訊自研資料庫CynosDB發布,開啟公測
2018年11月22日,騰訊雲召開新一代自研資料庫CynosDB發布會,業界第一款全面兼容市面上兩大最主流的開源資料庫MySQL和PostgreSQL的高性能企業級分布式雲資料庫。
本期新秀:京東雲DRDS發布1.0版本
12月24日,京東雲分布式關系型資料庫DRDS正式發布1.0版本。
DRDS是京東雲精心自研的資料庫中間件產品,獲得了2018年 」可信雲技術創新獎」。DRDS可實現海量數據下的自動分庫分表,具有高性能,分布式,彈性升級,兼容MySQL等優點,適用於高並發、大規模數據的在線交易, 歷史 數據查詢,自動數據分片等業務場景,歷經多次618,雙十一的考驗,已經在京東集團內大規模使用。
京東雲DRDS產品有以下主要特性
1)自動分庫分表
通過簡單的定義即可自動實現分庫分表,將數據實際存放在多個MySQL實例的資料庫中,但呈現給應用程序的依舊是一張表,對業務透明,應用程序幾乎無需改動,實現了對資料庫存儲和處理能力的水平擴展。
2)分布式架構
基於分布式架構的集群方案,多個對等節點同時對外提供服務,不但可有效規避服務的單點故障,而且更加容易擴展。
3)超強性能
具有極高的處理能力,雙節點即可支持數萬QPS,滿足用戶超大規模處理能力的需求。
4)兼容MySQL
兼容絕大部分MySQL語法,包括MySQL語法、數據類型、索引、常用函數、排序、關聯等DDL,DML語句,使用成本低。
參考鏈接:
https://www.jdcloud.com/cn/procts/drds
RadonDB發布1.0.3版本
2018年12月26日,MyNewSQL領域的RadonDB雲資料庫發布1.0.3版本。
推出dbaplus Newsletter的想法
dbaplus Newsletter旨在向廣大技術愛好者提供資料庫行業的最新技術發展趨勢,為社區的技術發展提供一個統一的發聲平台。為此,我們策劃了RDBMS、NoSQL、NewSQL、時間序列、大數據生態圈、國產資料庫、雲資料庫等幾個版塊。
我們不以商業宣傳為目的,不接受任何商業廣告宣傳,嚴格審查信息源的可信度和准確性,力爭為大家提供一個純凈的技術學習環境,歡迎大家監督指正。
至於Newsletter發布的周期,目前計劃是每三個月左右會做一次跟進, 下期計劃時間是2019年4月14日~4月25日, 如果有相關的信息提供請發送至郵箱:newsletter@dbaplus.cn
感謝名單
最後要感謝那些提供寶貴信息和建議的專家朋友,排名不分先後。
往期回顧:
↓↓別忘了點這里下載 2019年1月 完整版Newsletter 哦~
⑸ sql語句 怎麼從一張表中查詢數據插入到另一張表中
sql語句從一張表中查詢數據插入到另一張表中的方法如下:
1、select * into destTbl from srcTbl。
2、insert into destTbl(fld1, fld2) select fld1, 5 from srcTbl。
以上兩句都是將 srcTbl 的數據插入到 destTbl,但兩句又有區別的:
第一句(select into from)要求目標表(destTbl)不存在,因為在插入時會自動創建。
第二句(insert into select from)要求目標表(destTbl)存在,由於目標表已經存在,所以我們除了插入源表(srcTbl)的欄位外,還可以插入常量。
拓展資料:
結構化查詢語言(Structured Query Language)簡稱SQL,結構化查詢語言是一種資料庫查詢和程序設計語言,用於存取數據以及查詢、更卜凱漏新和管理關系資料庫系統。sql 語句就是對資料庫進行操作的一種語言。
常見語句:
1、更新:update table1 set field1=value1 where 范圍。孫逗
2、查找:select * from table1 where field1 like 』%value1%』 (所有包含『value1』這個模式的字元串)。
3、排序:select * from table1 order by field1,field2 [desc]。
4、求和:select sum(field1) as sumvalue from table1。
5、型爛平均:select avg(field1) as avgvalue from table1。
6、最大:select max(field1) as maxvalue from table1。
7、最小:select min(field1) as minvalue from table1[searator]。
⑹ linux怎麼用命令登陸postgres
(1)用戶實用程序:
createdb 創建一個新的PostgreSQL的資料庫(和SQL語句:CREATE DATABASE 相同)
createuser 創建一個新的PostgreSQL的用戶(和SQL語句:CREATE USER 相同)
dropdb 刪除資料庫
dropuser 刪除用戶
pg_mp 將PostgreSQL資料庫導出到一個腳本文件
pg_mpall 將所有的PostgreSQL資料庫導出到一個腳本文件
pg_restore 從一個由pg_mp或pg_mpall程序導出的腳本文件中恢復PostgreSQL資料庫
psql 一個基於命令行的PostgreSQL互動式客戶端程序
vacuumdb 清理和分析一個PostgreSQL資料庫,它是客戶端程序psql環境下SQL語句VACUUM的shell腳本封裝,二者功能完全相同
(2)系統實用程序
initdb 創建一個用於存儲資料庫的PostgreSQL數據目錄,並創建預定義的模板資料庫template0和template1,生成共享目錄表 catalog;此程序通常只在安裝PostgreSQL時運行一次
initlocation 創建一個輔助的PostgreSQL資料庫存儲區域
ipcclean 從停止的PostgreSQL伺服器中清除共享內在和孤立信號標志
pg_ctl 啟動、停止、重啟PostgreSQL服務(比如:pg_ctl start 啟動PostgreSQL服務,它和service postgresql start相同)
pg_controldata 顯示PostgreSQL服務的內部控制信息
postgres PostgreSQL單用戶模式的資料庫服務
postmaster PostgreSQL多用戶模式的資料庫服務
4.這裡面最重要的是psql這個客戶端程序最為重要。啟用客戶端程序psql的方法是:
切換到PostgreSQL預定義的資料庫超級用戶postgres,啟用客戶端程序psql,並連接到自己想要的資料庫,比如說:
psql template1
出現以下界面,說明已經進入到想要的資料庫,可以進行想要的操作了。
template1=#
5.在資料庫中的一些命令:
template1=# \l 查看系統中現存的資料庫
template1=# \q 退出客戶端程序psql
template1=# \c 從一個資料庫中轉到另一個資料庫中,如template1=# \c sales 從template1轉到sales
template1=# \dt 查看錶
template1=# \d 查看錶結構
template1=# \di 查看索引
[基本資料庫操作]========================
*創建資料庫:
create database [資料庫名];
*查看資料庫列表:
\d
*刪除資料庫:
drop database [資料庫名];
創建表:
create table ([欄位名1] [類型1] <references 關聯表名(關聯的欄位名)>;,[欄位名2] [類型2],......<,primary key (欄位名m,欄位名n,...)>;);
*查看錶名列表:
\d
*查看某個表的狀況:
\d [表名]
*重命名一個表:
alter table [表名A] rename to [表名B];
*刪除一個表:
drop table [表名];
========================================
[表內基本操作]==========================
*在已有的表裡添加欄位:
alter table [表名] add column [欄位名] [類型];
*刪除表中的欄位:
alter table [表名] drop column [欄位名];
*重命名一個欄位:
alter table [表名] rename column [欄位名A] to [欄位名B];
*給一個欄位設置預設值:
alter table [表名] alter column [欄位名] set default [新的默認值];
*去除預設值:
alter table [表名] alter column [欄位名] drop default;
在表中插入數據:
insert into 表名 ([欄位名m],[欄位名n],......) values ([列m的值],[列n的值],......);
修改表中的某行某列的數據:
update [表名] set [目標欄位名]=[目標值] where [該行特徵];
刪除表中某行數據:
delete from [表名] where [該行特徵];
delete from [表名];--刪空整個表
6.要注意隨時對資料庫進行清理、收回磁碟空間並更新統計信息,使用下面的命令就搞定!
vaccumdb -d sales -z
-a 對所有的資料庫操作
-z 保證不斷地刪除失效的行,節約磁碟空間,將統計信息更新為最近的狀態
7.PostgreSQL用戶認證
PostgreSQL數據目錄中的pg_hba.conf的作用就是用戶認證,可以在/var/lib/pgsql/data中找到。
有以下幾個例子可以看看:
(1)允許在本機上的任何身份連接任何資料庫
TYPE DATABASE USER IP-ADDRESS IP-MASK METHOD
local all all trust(無條件進行連接)
(2)允許IP地址為192.168.1.x的任何主機與資料庫sales連接
TYPE DATABASE USER IP-ADDRESS IP-MASK METHOD
host sales all 192.168.1.0 255.255.255.0 ident sameuser(表明任何操作系統用戶都能夠以同名資料庫用戶進行連接)
8.看了那麼多,來一個完整的創建PostgreSQL資料庫用戶的示例吧
(1)進入PostgreSQL高級用戶
(2)啟用客戶端程序,並進入template1資料庫
psql template1
(3)創建用戶
template1=# CREATE USER hellen WITH ENCRYPED PASSWORD'zhenzhen'
(4)因為設置了密碼,所以要編輯pg_hba.conf,使用戶和配置文件同步。
在原有記錄上面添加md5
local all hellen md5
(4)使用新用戶登錄資料庫
template1=# \q
psql -U hellen -d template1
PS:在一個資料庫中如果要切換用戶,要使用如下命令:
template1=# \!psql -U tk -d template1
9.設定用戶特定的許可權
還是要用例子來說明:
創建一個用戶組:
sales=# CREATE GROUP sale;
添加幾個用戶進入該組
sales=# ALTER GROUP sale ADD USER sale1,sale2,sale3;
授予用戶級sale針對表employee和procts的SELECT許可權
sales=# GRANT SELECT ON employee,procts TO GROUP sale;
在sale中將用戶user2刪除
sales=# ALTER GROP sale DROP USER sale2;
10.備份資料庫
可以使用pg_mp和pg_mpall來完成。比如備份sales資料庫:
pg_mp sales>/home/tk/pgsql/backup/1.bak