內(nèi)存數(shù)據(jù)庫(kù)是相對(duì)于磁盤數(shù)據(jù)庫(kù)來說的。我們都知道我們經(jīng)常使用的關(guān)系型數(shù)據(jù)庫(kù),比如MySQL,它的數(shù)據(jù)文件最終是存儲(chǔ)到磁盤上的。而內(nèi)存數(shù)據(jù)庫(kù)則是將所有的數(shù)據(jù)存儲(chǔ)在內(nèi)存中,磁盤和內(nèi)存在訪問速率上不是一個(gè)量級(jí)的,完全沒有可比性。
隨著內(nèi)存容量不斷加大、價(jià)格不斷下降,互聯(lián)網(wǎng)的流量越來越大的情況下,內(nèi)存數(shù)據(jù)庫(kù)逐步被廣泛應(yīng)用起來。
應(yīng)用場(chǎng)景緩存數(shù)據(jù):將高頻訪問的數(shù)據(jù)通過一定的機(jī)制加載到內(nèi)存中,減少應(yīng)用與數(shù)據(jù)庫(kù)的連接,極大的提高了應(yīng)用的性能;
內(nèi)存計(jì)算:如果你的數(shù)據(jù)在內(nèi)存中,那么你可以充分利用CPU的資源去做數(shù)據(jù)的計(jì)算、聚合、查詢,而不用擔(dān)心數(shù)據(jù)庫(kù)是否能承受你的SQL查詢。
主流的內(nèi)存數(shù)據(jù)庫(kù)關(guān)系型內(nèi)存數(shù)據(jù)庫(kù):H2、Apache Ignite、SQLite
H2:支持嵌入式,服務(wù)器和集群模式,支持內(nèi)存數(shù)據(jù)庫(kù),純Java開發(fā)Apache Ignite:高性能、集成化、分布式的內(nèi)存平臺(tái),他可以實(shí)時(shí)地在大數(shù)據(jù)集中執(zhí)行事務(wù)和計(jì)算,可以像操作數(shù)據(jù)庫(kù)一樣,操作內(nèi)存緩存SQLite:小而精美,iOS和Android開發(fā)本地?cái)?shù)據(jù)庫(kù)的不二之選Key-Value內(nèi)存數(shù)據(jù)庫(kù):redis、Memcached
redis:支持String、Set、Hash、Sorted Set、ListMemcached:是一個(gè)簡(jiǎn)潔的、高性能的、分布式的內(nèi)存對(duì)象緩存系統(tǒng)傳統(tǒng)數(shù)據(jù)庫(kù)的內(nèi)存數(shù)據(jù)庫(kù)引擎:
MySQL Memory EngineSQL Server 2016 In-Memory OLTP傳統(tǒng)數(shù)據(jù)庫(kù)提供的內(nèi)存數(shù)據(jù)庫(kù),將磁盤數(shù)據(jù)加載到內(nèi)存中,利用查詢引擎操作內(nèi)存數(shù)據(jù)總結(jié)以上是個(gè)人整理的一些內(nèi)存數(shù)據(jù)庫(kù),都是我們平常業(yè)務(wù)開發(fā)時(shí)候多少都有用到的內(nèi)存數(shù)據(jù)庫(kù)。了解每一種內(nèi)存數(shù)據(jù)庫(kù)的特性,結(jié)合它們的優(yōu)缺點(diǎn)并應(yīng)用于不同的業(yè)務(wù)場(chǎng)景,才是正確的編碼之道。
內(nèi)存數(shù)據(jù)庫(kù)不是銀彈,他也不能代替?zhèn)鹘y(tǒng)數(shù)據(jù)庫(kù),只有內(nèi)存數(shù)據(jù)庫(kù)與傳統(tǒng)數(shù)據(jù)庫(kù)(磁盤數(shù)據(jù)庫(kù))強(qiáng)強(qiáng)聯(lián)手、互相補(bǔ)充才能發(fā)揮出數(shù)據(jù)存儲(chǔ)技術(shù)的強(qiáng)大威力!