當前位置:首頁 » 網頁前端 » mongodbweb可視化工具
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

mongodbweb可視化工具

發布時間: 2022-05-05 21:11:53

資料庫可視化軟體有哪些

這要看是什麼資料庫,比如My sql資料庫,可以用navicat for mysql、phpMyAdmin、MySQLDumper之類的軟體實現可視化操作。


② mac安裝mongodb的配置文件在哪

1.安裝homebrew
homebrew的安裝查看官網,安裝完成後,在終端中輸入以下命令更新homebrew的package資料庫
brew update

提示:brew update升級brew的版本庫,brew outdated 查看outdated的庫和應用,brew upgrade 升級outdated的庫和應用,brew cleanup 清理調過期的庫和應用
2.安裝mongodb
使用homebrew安裝mongodb,在MAC的終端中輸入
brew install mongodb

若要查看安裝信息
brew info mongodb

查看mongodb的版本
mongo --version

3.創建數據文件
1)進入根目錄
cd /

2)創建目錄
mkdir -p /data/db

3)設置許可權,並輸入用戶密碼
sudo chmod -R 777 /data

提示:其中-p是創建多個文件目錄使用的參數,-R表示對目錄進行遞歸操作,就是data目錄下的子文件也設置該許可權。
開機自啟動
4.設置plist文件
查找可執行文件mongod的位置
1)執行以下命令找到mongod可執行文件,例如/usr/local/bin/mongod
which mongod

2)右擊Dock中的Finder選中前往文件夾...,輸入/usr/local/bin找到這個mongod可執行文件
3)右擊mongod可執行文件,選中顯示簡介...,可以看到路徑例:/usr/local/Cellar/mongodb/3.2.6/bin/mongod
查找plist配置啟動項文件
使用homebrew安裝mongodb會產生一個啟動項配置文件,一般位於mongod可執行文件的上一級bin文件所在的目錄文件中。
修改plist配置啟動項文件
1)使用vim或者xcode打開plist配置文件,該文件名可能類似於homebrew.mxcl.mongodb.plist
2)方便起見,修改文件名為mongodb.plist
3)修改其中的Label為mongodb,與文件名相同
4)修改ProgramArguments的可執行進程為可執行文件mongod的位置,例如以上/usr/local/Cellar/mongodb/3.2.6/bin/mongod,可刪除ProgramArguments的其餘項。
拷貝plist配置啟動項文件
cp mongodb.plist /Library/LaunchDaemons/

提示:mongodb.plist如果不是在當前的文件夾路徑下,先進入所在文件夾,注意該目錄與~/Library/LaunchDaemons/和/System/Library/LaunchDaemons/的區別。
5.啟動服務
使用root許可權
sudo -s

啟動服務
sudo launchctl load -w /Library/LaunchDaemons/mongodb.plist

關閉服務
sudo launchctl unload -w /Library/LaunchDaemons/mongodb.plist

若發現以下錯誤:
Path had bad permissions
是因為文件的許可權不夠,將許可權修改為root,執行以下命令,再執行啟動服務
sudo chown root mongodb.plist

測試資料庫是否可啟動
使用CMD + N新建一個終端,輸入mongo
Last login: Tue Jun 7 21:50:28 on ttys001
victor:~ victor$ mongo
MongoDB shell version: 3.2.6
connecting to: test
>

表明連接成功!如果關機重新啟動,仍然可以連接資料庫。
提示:如果有RoboMongo等mongdodb可視化工具,在啟動服務時可以嘗試連接資料庫,此時應該可以連接上資料庫。
WebStorm插件Mongo
6.安裝插件
WebStorm > Preferences > Plugins > Mongo(輸入搜索) > install plugin(安裝插件)
7.配置插件
1)設置參數
WebStorm > Preferences > Other Settings > Mongo Services
添加可執行文件mongod可執行文件的路徑,詳情查看查看4.設置plist文件中的可執行文件mongod的位置,點擊test驗證
添加Servers

③ 有沒有哪款資料庫數據分析軟體是比較好用的可以達到可視化效果的

OurwayBI V2.0數據可視化工具——幫你吃透數據

全新升級OurwayBI V2.0,除了無縫對接主流ERP如金蝶、用友等,更增添了此前一度被各大BI廠商有意無意遺忘的非主流ERP,如SAPHANA、webserver、webapi、sybase、mongodb、influxdb、k3cloud、MyCat等。

④ 奧威BI的數據可視化工具可以對接哪些數據源呀

主流數據源Excel、MSSQL、Oracle、MySQL、SQLite 、SAPHANA、webserver、webapi、 sybase、mongodb、influxdb、k3cloud、MyCat等都可以。

做出來的數據可視化報表效果圖

⑤ OurwayBI可視化分析工具可以連接Oracle數據源嗎

你好的!

那這個問題吧,你就要看看那個工具是不是支持了!

你的問問供應商才知道的!

不過,從一般的理論上來說,如果不支持oracle的話,那麼這個工具還能有幾家用..

望採納!

⑥ 請問web開發工具都有哪些

1.Web應用框架
這些軟體是專門設計來幫助網站開發,並使創建網站的Web開發的過程變得更容易。該軟體完全支持Web服務,Web資源和Web
API。這些框架會自動執行與Web開發中的常見活動相關聯的一些進程,從而使Web開發人員的工作變得更加容易。可用的Web開發框架包括ASP.NET,JavaEE,WebObjects,web2py,OpenACS等。
2.協作工具
對於遠程工作的團隊,需要時刻保持聯系和協作。為了提高開發效率,幫助開發者在同一個項目上工作的流程簡化開發流程,以實現團隊的設定目標,市場上出現了很多協作工具,如Slack,Trello,Asana,Jira等。
3.本地開發環境
一個快速的本地開發環境,可以推出取決於操作系統或您正在使用的計算機。有各種各樣的免費軟體,軟體Apache,MySQL和其他打包在一起。這是在本地計算機上最快的一種測試方式,為了方便使用,有些程序還出了攜帶型版本。本地開發環境包括MAMP,LARAGAN,XAMPP和Vagrant等。
4.前端框架
前端框架基本上是一些文件和文件夾,如HTML,CSS和JavaScript等。前端框架通常包含有有準備好的組件,大多數組件都是可以進行修改和調整的,開發人員可以根據自己的開發需求來選擇使用,目前最常見的前端框架是Bootstrap。
5.圖標
圖標對於Web開發人員,尤其是前端開發人員非常重要,它們是Web開發的重要組成部分。上圖中的圖標都可以應用於你的項目,且這其中大部分是免費的。
6.網站速度測試工具
網站速度是決定一個網站是否成功的重要因素。現在的用戶越來越挑剔,大家往往更傾向於載入速度快的網站,對於載入速度慢的網站,大家幾乎是零容忍。另外,SEO做得好的話,可能會帶來更高的轉化率和更好的用戶體驗。Web開發人員可以使用工具來測試他們的網站速度,以確保他們的網站能夠擁有較短的載入時間。
7.文本對比檢查
Diff checkers 可以幫助您比較文件之間的差異,然後合並更改,幫助我們更直觀的看見文本之間的差異。
8.資料庫
資料庫基本上是已經存儲信息的集合,可以進行信息的檢索,管理甚至更新。Web開發人員常用的資料庫有MySQL,MariaDB,MongoDB,Redis等。
9.Web開發通訊
為什麼選擇通訊訂閱,因為開發人員可以利用這些工具節省時間和精,通過這些工具選擇最佳的Web開發和性能主題,而不必自己動手。
10.任務批處理工具/包管理器
任務批處理工具有助於自動化工作流程。例如,你創建了一個任務,可以通過JavaScript編寫的工具來自動化工作流程。除此之外,還可以新建和組合任務,使用任務管理器縮短開發時間,加快開發速率。
另一方面,包管理器也是很重要的,它可以跟蹤所有軟體,確保這些軟體都更新至最新版本,擁有最強的功能。這些工具包括:Grunt,Gulp,npm等。
11.文本和代碼編輯器
文本和代碼編輯器不僅能夠為開發者帶來良好的代碼體驗,而且能夠大大節約網站開發的時間。比較常用的編輯器有Atom,Notepad++,Vim等。之前,筆者也發過程序員票選最佳的代碼編輯器,感興趣的朋友可以戳進去看一下。
12.靈感
對於很多工種來說,靈感都是極為重要的,但是靈感是可遇不可求的,所以一旦有了靈感就必須及時記錄下來。除了我們自己的靈感迸現,我們也可以從別人的作品中提煉出新的靈感。常見的記錄靈感的工具有CodePen
和Dribble。
13.編程語言
每個Web開發工具都有一種編程語言。編程語言被設計為開發人員或程序員和計算機之間的橋梁,並幫助程序員創建我們每天使用的程序。比較流行的編程語言包括PHP,NodeJS,Python,Ruby等。
14.代碼共享/實驗工具
基本上編程這個工作是一個團隊合作,團隊之間要保持親密無間的協作關系,互相檢查對方的代碼有助於更有效的進行程序編寫。代碼共享是現在程序員都在使用的一種方式,常見的有Slack。
15.Git 託管
Git是一款免費、開源的分布式版本控制系統,可以高效的管理大小項目的各個版本,可以幫助開發團隊避免混亂。

⑦ 萬方資料庫用什麼軟體可視化分析

摘要 可視化分析軟體(OurwayBI)可直接鏈接主流數據源Excel、MSSQL、Oracle、MySQL、SQLite 、SAPHANA、webserver、webapi、 sybase、mongodb、influxdb、k3cloud、MyCat等實現資料庫可視化。

⑧ 誰知道大數據分析工具都有什麼

常用到的大數據分析工具大概有
1.專業的大數據分析工具
2.各種Python數據可視化第三方庫
3.其它語言的數據可視化框架
一、專業的大數據分析工具
1、FineReport
FineReport是一款純Java編寫的、集數據展示(報表)和數據錄入(表單)功能於一身的企業級web報表工具,只需要簡單的拖拽操作便可以設計復雜的中國式報表,搭建數據決策分析系統。
2、FineBI
FineBI是新一代自助大數據分析的商業智能產品,提供了從數據准備、自助數據處理、數據分析與挖掘、數據可視化於一體的完整解決方案,也是我比較推崇的可視化工具之一。
FineBI的使用感同Tableau類似,都主張可視化的探索性分析,有點像加強版的數據透視表。上手簡單,可視化庫豐富。可以充當數據報表的門戶,也可以充當各業務分析的平台。
二、Python的數據可視化第三方庫
Python正慢慢地成為數據分析、數據挖掘領域的主流語言之一。在Python的生態里,很多開發者們提供了非常豐富的、用於各種場景的數據可視化第三方庫。這些第三方庫可以讓我們結合Python語言繪制出漂亮的圖表。
1、pyecharts
Echarts(下面會提到)是一個開源免費的javascript數據可視化庫,它讓我們可以輕松地繪制專業的商業數據圖表。當Python遇上了Echarts,pyecharts便誕生了,它是由chenjiandongx等一群開發者維護的Echarts Python介面,讓我們可以通過Python語言繪制出各種Echarts圖表。
2、Bokeh
Bokeh是一款基於Python的互動式數據可視化工具,它提供了優雅簡潔的方法來繪制各種各樣的圖形,可以高性能地可視化大型數據集以及流數據,幫助我們製作互動式圖表、可視化儀錶板等。
三、其他數據可視化工具
1、Echarts
前面說過了,Echarts是一個開源免費的javascript數據可視化庫,它讓我們可以輕松地繪制專業的商業數據圖表。
大家都知道去年春節以及近期央視大規劃報道的網路大數據產品,如網路遷徙、網路司南、網路大數據預測等等,這些產品的數據可視化均是通過ECharts來實現的。
2、D3
D3(Data Driven Documents)是支持SVG渲染的另一種JavaScript庫。但是D3能夠提供大量線性圖和條形圖之外的復雜圖表樣式,例如Voronoi圖、樹形圖、圓形集群和單詞雲等。

⑨ 如何提高mongodb查詢速度

有索引非常快,數據量幾百萬都是小意思
索引這個東西大家不會陌生,只要接觸到稍微大一點的數據,都會用到這東西,它可以提升查詢的速度,相當代價就是佔用了更多的存儲空間,這也是正常
的,符合「能量守恆定理」,哈哈!今天說的是MongoDB里的索引,在我進行對500萬數據進行查詢測試時,發現如果你的查詢欄位不加索引,那是相當恐
怖的,一個簡單的查詢(單欄位)要耗時30多秒,這種操作,基本可以認為伺服器掛了,哈哈!當為欄位加了索引之後,查詢速度為ms級,100毫秒以內的速
度真是把經興奮壞了,呵呵!

建立索引 db.tableName.ensureIndex({"fieldName",1|-1})

對於為500萬的數據加索引相當需要佔用一點點時間了,不是馬上響應的,這也會正常,呵呵!當加完索引後,你可以通過MongoVUE這種可視化工具對它進行查看,或者直接用命令db.tableName.getIndexes()也可以

在選中資料庫background後,我們可以看到它的集合數據和集合索引分別佔用的空間

當為表(集合,collection)加上索引後,我們的WEB頁面測試一下可以看到,頁面響應在ms級,非常快!

對於單表查詢來說,MongoDB在添加了索引後,執行的速度和穩定性確實是可以信賴的,在進行復雜計算時,MongoDB也為我們提供了MapRece功能,在以後的文章中也會單獨講它!

⑩ 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。