1)數(shù)據(jù)加載
鶴山網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)!從網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、響應(yīng)式網(wǎng)站建設(shè)等網(wǎng)站項目制作,到程序開發(fā),運營維護。創(chuàng)新互聯(lián)2013年開創(chuàng)至今到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗和運維經(jīng)驗,來保證我們的工作的順利進行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)。
從服務(wù)端資源消耗的角度看,是MongoDB的性能是PostgreSQL的2倍。但是如果數(shù)據(jù)加載不能很好的并發(fā)展開,讓mongoimport成為了瓶頸,那應(yīng)該算打平。
另外,EnterpriseDB的數(shù)據(jù)加載的測試結(jié)果和我的結(jié)果差異比較大,可能是因為EnterpriseDB的測試中,數(shù)據(jù)量超過了系統(tǒng)內(nèi)存量,IO對測試結(jié)果的影響開始顯現(xiàn)。
2)數(shù)據(jù)插入
從服務(wù)端資源消耗的角度看,兩者其實相差不大。EnterpriseDB的測試結(jié)果被mongo客戶端的性能瓶頸綁架了。
3)數(shù)據(jù)查詢
對無匹配數(shù)據(jù)(或少量匹配數(shù)據(jù))的索引查詢,PostgreSQL的性能是MongoDB的4倍(這一點也有點令人不解,同樣是走索引的單點查詢,為什么差距就這么大呢?)。
雖然EnterpriseDB的測試結(jié)果也表明PostgreSQL的性能是MongoDB 4倍左右,但EnterpriseDB的測試方法是有問題的。
4)數(shù)據(jù)大小
MongoDB的數(shù)據(jù)大小大約是PostgreSQL的3倍,這和EnterpriseDB的測試結(jié)果是一致的。
PostgreSQL在NoSQL方面的表現(xiàn)確實搶眼。PostgreSQL不僅是SQL+NoSQL+ACID的完美組合,性能還比MongoDB技高一籌(分布式集群上MongoDB更有優(yōu)勢)。
PostgreSQL的全文檢索接口是開放API的,所以中文分詞的插件也非常多,例如常用的scws分詞插件,還有結(jié)巴分詞的插件。
但是你在使用結(jié)巴分詞插件的時候,有沒有遇到這樣的問題。
每個會話,第一次查詢會比較慢,接下來的查詢就快了。
熱力圖,在空間數(shù)據(jù)可視化場景中是一個非常常見的需求。首先看下一個完整的熱力圖效果。
前端實現(xiàn)熱力圖的原理可以看該 博文 。本文不是探究熱力圖前端實現(xiàn)原理的,是來探討由于熱力圖一次性加載的點過多,產(chǎn)生卡頓的問題。
前面的 博文 也提出了自己的解決辦法。但是若數(shù)據(jù)居多(10w+),光數(shù)據(jù)傳輸就頭疼。現(xiàn)有的熱力圖的前端組件有很多,可以用openlayer、高德地圖js、百度地圖js、mapbox等。但是大多數(shù)的數(shù)據(jù)結(jié)構(gòu)的都是下面這種形式。
所以需要在后臺將下面策略實現(xiàn),給前臺頁面?zhèn)鬏敽线m的數(shù)據(jù)就行。
借助postgresql的width_bucket和postgis,僅用0.4s將20W的數(shù)據(jù)壓縮到2500,這就大大降低了數(shù)據(jù)傳輸和渲染的壓力。同時也不需要對已有的GIS前端熱力圖組件進行修改。
德哥的文章
數(shù)據(jù)可視化:淺談熱力圖如何在前端實現(xiàn)
postgresql 9.4 在linux環(huán)境的安裝步驟詳解
這里實驗的環(huán)境系統(tǒng):centos 6.4 64位
軟件:postgresql 9.4.1
軟件下載
cd /usr/local/src/
wget
安裝依賴包
yum install -y perl-ExtUtils-Embed readline-devel zlib-devel pam-devel libxml2-devel libxslt-devel openldap-devel python-devel gcc-c++ openssl-devel cmake
安裝postgresql
tar xf postgresql-9.4.1.tar.gz
cd postgresql-9.4.1
./configure --prefix=/usr/local/pgsql --with-perl --with-python --with-libxml --with-libxslt
gamke
gamke install
安裝PG插件
cd /usr/local/src/postgresql-9.4.1/contrib
gmake
gmake install
加載動態(tài)庫
echo "/usr/local/pgsql/lib" /etc/ld.so.conf.d/pgsql.conf
ldconfig
初始化數(shù)據(jù)庫
創(chuàng)建用戶postgres
useradd postgres
echo "postgres"|passwd --stdin postgres
創(chuàng)建PG數(shù)據(jù)目錄
mkdir -p /data/pg/data
chown -R postgres:postgres /data/pg
/usr/local/pgsql/bin/initdb --no-locale -U postgres -E utf8 -D /data/pg/data -W
(在初始化的時候,看提示添加超級用戶的密碼)
備注
initdb [選項]... [DATADIR]
-A, --auth=METHOD 本地連接的默認認證方法
-D, --pgdata=DATADIR 當(dāng)前數(shù)據(jù)庫簇的位置
-E, --encoding=ENCODING 為新數(shù)據(jù)庫設(shè)置默認編碼
--locale=LOCALE 為新數(shù)據(jù)庫設(shè)置默認語言環(huán)境
--lc-collate, --lc-ctype, --lc-messages=LOCALE
--lc-monetary, --lc-numeric, --lc-time=LOCALE
為新的數(shù)據(jù)庫簇在各自的目錄中分別
設(shè)定缺省語言環(huán)境(默認使用環(huán)境變
量)
--no-locale 等同于 --locale=C
--pwfile=文件名 對于新的超級用戶從文件讀取口令
-T, --text-search-config=CFG
缺省的文本搜索配置
-U, --username=NAME 數(shù)據(jù)庫超級用戶名
-W, --pwprompt 對于新的超級用戶提示輸入口令
-X, --xlogdir=XLOGDIR 當(dāng)前事務(wù)日志目錄的位置
非普通使用選項:
-d, --debug 產(chǎn)生大量的除錯信息
-L DIRECTORY 輸入文件的位置
-n, --noclean 出錯后不清理
-s, --show 顯示內(nèi)部設(shè)置
其它選項:
-?, --help 顯示此幫助, 然后退出
-V, --version 輸出版本信息, 然后退出
如果沒有指定數(shù)據(jù)目錄, 將使用環(huán)境變量 PGDATA
配置運行環(huán)境變量(方便管理)
切換到root
vim /etc/profile
添加以下代碼:
PGDATA=/data/pg/data
PGHOST=127.0.0.1
PGDATABASE=postgres
PGUSER=postgres
PGPORT=5432
PATH=/usr/local/pgsql/bin:$PATH
export PATH
export PGDATA PGHOST PGDATABASE PGUSER PGPORT
執(zhí)行生效
source /etc/profile
postgresql服務(wù)管理
啟動:
pg_ctl start -D /data/pg/data
重啟:
pg_ctl restart -D /data/pg/data
停止:
pg_ctl stop -D /data/pg/data
強制重啟:
pg_ctl restart -D /data/pg/data -m f
強制停止:
pg_ctl stop -D /data/pg/data -m f
-m f 指定快速關(guān)閉
加載配置:
pg_ctl reload -D /data/pg/data
顯示服務(wù)狀態(tài):
pg_ctl status -D /data/pg/data
連接數(shù)據(jù)庫
psql -h 127.0.0.1 -U postgres -p 5432 -d postgres -W
-d 指定數(shù)據(jù)庫 ,-W 輸入密碼 , -U 指定用戶,-p 指定端口,-h 指定IP
復(fù)制PostgreSQL執(zhí)行腳本
cp /usr/local/src/postgresql-9.4.1/contrib/start-scripts/linux /etc/init.d/postgresql
chmod +x /etc/init.d/postgresql
修改/etc/init.d/postgresql
把PGDATA改成PGDATA=/data/pg/data
加入開機啟動
chkconfig postgresql on
管理PG服務(wù)時也可以直接用上面啟動腳本
啟動:service postgresql start
停止:service postgresql stop
重啟:service postgresql restart
加載:service postgresql reload
狀態(tài):serivce postgresql status