新聞中心
為什么SQL處理數(shù)據(jù)比Java快?
因為sql是直接操作數(shù)據(jù)庫,java需要先與數(shù)據(jù)庫建立連接,在發(fā)指令到數(shù)據(jù)庫進行操作,因此速度肯定沒有sql快,但是sql不太擅長業(yè)務邏輯處理的操作,一般情況是用java來做業(yè)務邏輯的處理,然后調(diào)用sql對數(shù)據(jù)庫進行操作,或者通過nosql的技術來處理大數(shù)據(jù)高并發(fā)、大數(shù)據(jù)量的問題。

創(chuàng)新互聯(lián)是一家專業(yè)提供永濟企業(yè)網(wǎng)站建設,專注與網(wǎng)站設計、做網(wǎng)站、HTML5、小程序制作等業(yè)務。10年已為永濟眾多企業(yè)、政府機構(gòu)等服務。創(chuàng)新互聯(lián)專業(yè)的建站公司優(yōu)惠進行中。
1.選擇了Java就不要考慮運行效率.
2.SQL是描述...如果最終的執(zhí)行者也是Java來運行那速度一樣慢...大部分數(shù)據(jù)庫都不是Java的...
3.SQL背后有多少臺機器真的不好說...可能是數(shù)據(jù)庫集群...可能是大數(shù)據(jù)集群...
JAVA 與 .NET等 編程語言
它們是業(yè)務功能編程實現(xiàn)工具;
處理業(yè)務邏輯有先天性優(yōu)勢;
編程語言類庫中擁有豐富的系統(tǒng)函數(shù),開發(fā)效率高;
尤其是在SOA項目,大型綜合系統(tǒng)的開發(fā)中處于有利地位;
JAVA 與 .NET都提供了針對數(shù)據(jù)庫的驅(qū)動程序,他們操作數(shù)據(jù)庫是通過驅(qū)動程序中轉(zhuǎn)操作指令的,反應當然要慢一拍。
SQL server 與 MySQL,Oracle,MongoDB, Redis 等數(shù)據(jù)庫
它們是數(shù)據(jù)庫
前三個是關系型數(shù)據(jù)庫,一般用來存儲業(yè)務數(shù)據(jù),提供讀寫功能;
后2個是非關系型數(shù)據(jù)庫,人稱NoSQL數(shù)據(jù)庫,一般用來作為緩存服務器的軟件環(huán)境, 數(shù)據(jù)是以 JSON格式存儲的;
數(shù)據(jù)庫本質(zhì)是提供了 增加,修改,刪除,查詢功能的一個載體,好比是一個智能存儲的倉庫
使用SQL處理數(shù)據(jù)時,數(shù)據(jù)會在數(shù)據(jù)庫內(nèi)直接進行處理,而且sql處理本身可以對sql語句做優(yōu)化,按照最優(yōu)的策略自動執(zhí)行。
使用Java處理時,需要把數(shù)據(jù)從數(shù)據(jù)庫讀入到Java程序內(nèi)存,其中有網(wǎng)絡處理和數(shù)據(jù)封裝的操作,數(shù)據(jù)量比較大時,有一定的延遲,所以相對來說數(shù)據(jù)處理就慢一些。
當然,這個只是大體示意圖,實際根據(jù)業(yè)務不同會更復雜。
兩者側(cè)重的點不同,有各自適合的業(yè)務領域,需要根據(jù)實際情況選用合適的方式。
memcache、redis、mongodb優(yōu)缺點是什么啊,怎么選?
1、memcache
調(diào)用函數(shù),傳入key名稱,返回value值。
數(shù)據(jù)存儲在內(nèi)存里,速度快,缺點是電腦重啟后數(shù)據(jù)就沒有了。
2、redis
可以看做是men cache的升級版,數(shù)據(jù)可以存在硬盤上,不怕電腦重啟了,支持集群。
3、mongodb
可以把這個看成是類似MySQL數(shù)據(jù)庫差不多使用方式的數(shù)據(jù)庫,支持表,字段操作。
有專門的查詢語法,傳入?yún)?shù),返回json格式的記錄。
支持大數(shù)據(jù),集群,速度快。
我在筆記本里保存股票數(shù)據(jù),每秒存儲7000多條記錄,連續(xù)存幾小時,幾千萬條數(shù)據(jù),仍然速度超快,這個是單機mysql 做不到的。但是在Windows下,數(shù)據(jù)量過大時會溢出,建議安裝在linux下。
redis、memcahce 比較相似,但與 mongodb 完全不同,幾乎沒有可比性。
總的來說 redis/memcache 是基于內(nèi)存的,講究的是性能,多用作緩存層,比如說存放session。而 mongodb 是面向文檔的,存儲的是類似JSON的非結(jié)構(gòu)化數(shù)據(jù),查詢起來非常方便,開發(fā)效率高,比較類似傳統(tǒng)SQL關系型數(shù)據(jù)庫。
---------------
redis是內(nèi)存型KV數(shù)據(jù)庫(鍵值存儲數(shù)據(jù)庫,其數(shù)據(jù)按照鍵值對的形勢進行組織、索引、存儲),不支持二級索引,支持list,set等多種數(shù)據(jù)格式。適合存儲全局變量,適合讀多寫少的業(yè)務場景。很適合做緩存。
------------------
Memcached 是一個高性能的分布式內(nèi)存對象緩存系統(tǒng),用于動態(tài)Web應用以減輕數(shù)據(jù)庫負載。它通過在內(nèi)存中緩存數(shù)據(jù)和對象來減少讀取數(shù)據(jù)庫的次數(shù),從而提供動態(tài)、數(shù)據(jù)庫驅(qū)動網(wǎng)站的速度。Memcached基于一個存儲鍵/值對的hashmap。
-------------------
mongodb則是文檔型的非關系型數(shù)據(jù)庫,使用bson結(jié)構(gòu)。其優(yōu)勢在于查詢功能比較強大,能存儲海量數(shù)據(jù),缺點是比較消耗內(nèi)存。
雖然都是nosql范疇,但是memcache、redis主要設計目的是做緩存使用
mongodb的核心是提供無模式文檔結(jié)構(gòu)的持久化存儲,它的兩個核心點:提供接近(其實差距挺大的)緩存服務器的速度和接近關系數(shù)據(jù)庫API(這個已經(jīng)差不多了,連接查詢是弱點)的接口。
如果是幾年前,memcache、redis之間還有選擇綜合癥,目前的市場,你可以直接選擇redis,把精力完全放在redis身上去深入。
這是是市場反應,這個相信對你的選擇有絕對說服力。
memcache在性能方面沒有優(yōu)勢了,同時redis提供了更豐富的數(shù)據(jù)結(jié)構(gòu),各種原子操作,以及持久化(RDB/AOF)。如果你是小規(guī)模項目,你甚至可以直接用它設計消息訂閱,使用它的即時消息訂閱發(fā)布(你有消息持久化需求的話可以額外用redis的列表功能等定制)。
相比redis和memcache,mongodb的性能差距就比較大了。mongodb最核心的是它提供的B樹索引,這個為我們提供了范圍查詢的基礎,4.0提供了事務后,才算真正可以勉強在某些場合替代關系數(shù)據(jù)庫。動態(tài)性和內(nèi)嵌設計后的便利操作,很適合做中間數(shù)據(jù)管理。
PS:我最先使用mongodb,其實主要是用它做LBS應用。
如果你是中小項目,緩存使用redis是很合理的選擇,mongodb可以暫不使用,mysql已經(jīng)夠用。
作用完全不一樣,memcache是純內(nèi)存數(shù)據(jù)庫,就是干緩存的活,而mongo是文件數(shù)據(jù)庫,適合存放非關系型或沒事務要求的松散數(shù)據(jù),而redis是兩者之間,既能當緩存,有可持久化數(shù)據(jù),其實分布式memcache性能并不比redis強,又無redis持久化功能。所以現(xiàn)在基本快被redis取代了
到此,以上就是小編對于mongodb相比redis的優(yōu)勢在什么地方的問題就介紹到這了,希望這2點解答對大家有用。
本文名稱:memcache、redis、mongodb優(yōu)缺點是什么啊,怎么選?
文章地址:http://fisionsoft.com.cn/article/ccejedh.html


咨詢
建站咨詢
