新聞中心
文檔型數(shù)據(jù)庫(kù)(Document-oriented database),顧名思義,是一種以文檔為基本單位進(jìn)行數(shù)據(jù)存儲(chǔ)的數(shù)據(jù)庫(kù)。文檔型數(shù)據(jù)庫(kù)與傳統(tǒng)的關(guān)系型數(shù)據(jù)庫(kù)相比,在存儲(chǔ)方式上有很大區(qū)別。傳統(tǒng)的關(guān)系型數(shù)據(jù)庫(kù)將數(shù)據(jù)存儲(chǔ)在表格中,而文檔型數(shù)據(jù)庫(kù)將數(shù)據(jù)存儲(chǔ)在文檔中,這樣做在存儲(chǔ)非結(jié)構(gòu)化數(shù)據(jù)時(shí)比較方便。當(dāng)前,隨著大數(shù)據(jù)和互聯(lián)網(wǎng)信息時(shí)代的到來(lái),文檔型數(shù)據(jù)庫(kù)在應(yīng)用領(lǐng)域和企業(yè)中得到了越來(lái)越廣泛的使用。通過(guò)展示文檔型數(shù)據(jù)庫(kù)的實(shí)例,可以更好地了解該數(shù)據(jù)庫(kù)的基本特點(diǎn)和應(yīng)用場(chǎng)景,本文就介紹幾個(gè)相對(duì)比較流行的文檔型數(shù)據(jù)庫(kù)的實(shí)例。

成都創(chuàng)新互聯(lián)公司服務(wù)項(xiàng)目包括甘肅網(wǎng)站建設(shè)、甘肅網(wǎng)站制作、甘肅網(wǎng)頁(yè)制作以及甘肅網(wǎng)絡(luò)營(yíng)銷(xiāo)策劃等。多年來(lái),我們專(zhuān)注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢(shì)、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,甘肅網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶(hù)以成都為中心已經(jīng)輻射到甘肅省份的部分城市,未來(lái)相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶(hù)的支持與信任!
一、MongoDB
MongoDB是當(dāng)前應(yīng)用最廣泛的非關(guān)系型數(shù)據(jù)庫(kù)之一,它是一個(gè)基于分布式文件存儲(chǔ)的數(shù)據(jù)庫(kù),是由C++編寫(xiě)的。MongoDB以O(shè)N文檔存儲(chǔ)數(shù)據(jù),這意味著數(shù)據(jù)存儲(chǔ)非常靈活,可以存儲(chǔ)不同結(jié)構(gòu)的數(shù)據(jù)。MongoDB用于各種不同類(lèi)型的應(yīng)用程序,包括大數(shù)據(jù)、Web、移動(dòng)和IoT等領(lǐng)域,可以支持在線事務(wù)處理和豐富的數(shù)據(jù)類(lèi)型。
1. MongoDB應(yīng)用案例:美團(tuán)外賣(mài)
美團(tuán)外賣(mài)是一家垂直領(lǐng)域的O2O平臺(tái),主營(yíng)餐飲外賣(mài)服務(wù)??紤]到該平臺(tái)的高并發(fā)訪問(wèn)需求和數(shù)據(jù)處理的復(fù)雜性,美團(tuán)外賣(mài)選擇了MongoDB這一文檔型數(shù)據(jù)庫(kù)作為數(shù)據(jù)存儲(chǔ)引擎。MongoDB的高擴(kuò)展性和高可靠性,加上可以存儲(chǔ)不同結(jié)構(gòu)的數(shù)據(jù),使得美團(tuán)外賣(mài)平臺(tái)數(shù)據(jù)處理效率顯著提升。
2. MongoDB優(yōu)秀功能
MongoDB擁有不少優(yōu)秀的功能,如全文搜索、支持圖形數(shù)據(jù)處理、全面支持分布式處理、支持多存儲(chǔ)引擎、數(shù)據(jù)可靠性高等。比如全文搜索是MongoDB的獨(dú)特功能之一,可以支持模糊查詢(xún)和文本搜索等多種操作。此外,MongoDB也支持復(fù)制和故障恢復(fù),最多支持64個(gè)節(jié)點(diǎn)的復(fù)制,具有更好的數(shù)據(jù)可靠性和容錯(cuò)性。
二、CouchDB
Apache CouchDB是一個(gè)基于Erlang編寫(xiě)的開(kāi)源文檔型數(shù)據(jù)庫(kù),可以離線使用、復(fù)制和同步,支持高可用性和可擴(kuò)展性。它是一種可以在多個(gè)設(shè)備之間進(jìn)行數(shù)據(jù)交換和同步操作的數(shù)據(jù)庫(kù),如應(yīng)用程序、瀏覽器、移動(dòng)設(shè)備等多個(gè)平臺(tái)。CouchDB具有高度的靈活性、可擴(kuò)展性和可移植性。
1. CouchDB應(yīng)用案例:IBM
IBM是世界上領(lǐng)先的IT公司之一,該公司的大型商業(yè)系統(tǒng)在高并發(fā)的快速響應(yīng)需求方面對(duì)數(shù)據(jù)庫(kù)提出了巨大的挑戰(zhàn)。IBM選擇了CouchDB作為數(shù)據(jù)庫(kù)的主要存儲(chǔ)引擎,這是因?yàn)镃ouchDB的地理分區(qū)和數(shù)據(jù)分散處理能力十分強(qiáng)大,而且CouchDB非常適合處理和存儲(chǔ)大量非結(jié)構(gòu)化和半結(jié)構(gòu)化數(shù)據(jù)。這種選擇大大提升了IBM的數(shù)據(jù)處理能力,并支持了數(shù)據(jù)分發(fā)和數(shù)據(jù)分析。
2. CouchDB優(yōu)秀功能
CouchDB具有出色的分布式數(shù)據(jù)庫(kù)功能、可重試的分布式讀寫(xiě)操作、自動(dòng)復(fù)制和同步等功能。CouchDB可以將數(shù)據(jù)存儲(chǔ)在離線客戶(hù)端上,然后在需要時(shí)與主庫(kù)同步,使得應(yīng)用程序離線時(shí)也能夠繼續(xù)工作,這相對(duì)于其他數(shù)據(jù)庫(kù)應(yīng)用將極大地提高用戶(hù)體驗(yàn)。
三、RethinkDB
RethinkDB是一個(gè)支持實(shí)時(shí)查詢(xún)和連接的全新文檔型數(shù)據(jù)庫(kù),是一個(gè)由C++編寫(xiě)的開(kāi)源項(xiàng)目。它可以存儲(chǔ)、查詢(xún)和分析不同類(lèi)型的數(shù)據(jù),并且可以用于多個(gè)設(shè)備之間的數(shù)據(jù)傳輸和云端數(shù)據(jù)處理。RethinkDB主要優(yōu)勢(shì)在于其支持實(shí)時(shí)和復(fù)雜的查詢(xún)和連接,可以自動(dòng)推送實(shí)時(shí)查詢(xún)結(jié)果和更改通知,并且可以在高負(fù)載條件下提供高吞吐量的寫(xiě)操作。
1. RethinkDB應(yīng)用案例:Gmobi
Gmobi是一款手機(jī)預(yù)裝服務(wù),提供豐富的定制化手機(jī)應(yīng)用、美化的界面和強(qiáng)大的殼應(yīng)用等。該公司選擇了RethinkDB作為數(shù)據(jù)庫(kù)存儲(chǔ)引擎,使其產(chǎn)品平臺(tái)更穩(wěn)定、更可擴(kuò)展。RethinkDB的實(shí)時(shí)查詢(xún)和尺度處理能力,幫助Gmobi系統(tǒng)實(shí)時(shí)處理數(shù)百萬(wàn)件數(shù)據(jù),提升了系統(tǒng)的處理效率和用戶(hù)體驗(yàn)。
2. RethinkDB優(yōu)秀功能
RethinkDB的獨(dú)特之處在于其支持分布式和實(shí)時(shí)查詢(xún)和連接。它可以自動(dòng)推送實(shí)時(shí)查詢(xún)結(jié)果和更改通知,支持豐富的數(shù)據(jù)類(lèi)型和請(qǐng)求語(yǔ)言,包括Java和Python。RethinkDB支持可重試和可撤銷(xiāo)的讀寫(xiě)事務(wù),提供復(fù)雜數(shù)據(jù)挖掘和大規(guī)模數(shù)據(jù)處理能力,具有更高的處理效率和更好的可靠性。
本文通過(guò)介紹MongoDB、CouchDB和RethinkDB三個(gè)文檔型數(shù)據(jù)庫(kù)的案例和特點(diǎn),可以看出文檔型數(shù)據(jù)庫(kù)的廣泛應(yīng)用和優(yōu)秀功能,但也存在一些不足之處。文檔型數(shù)據(jù)庫(kù)在存儲(chǔ)半結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)方面具有很大的優(yōu)勢(shì),但在需要存儲(chǔ)更多結(jié)構(gòu)化數(shù)據(jù)時(shí)就存在一些限制。此外,文檔型數(shù)據(jù)庫(kù)相對(duì)于傳統(tǒng)的關(guān)系型數(shù)據(jù)庫(kù)來(lái)說(shuō),對(duì)于開(kāi)發(fā)人員難度要求較高。但是無(wú)論如何,文檔型數(shù)據(jù)庫(kù)正以其卓越的性能、可擴(kuò)展性和高度的靈活性逐漸成為不同領(lǐng)域和企業(yè)重要的數(shù)據(jù)存儲(chǔ)方式之一。
相關(guān)問(wèn)題拓展閱讀:
- 如何將大文件寫(xiě)入到數(shù)據(jù)庫(kù)中
如何將大文件寫(xiě)入到數(shù)據(jù)庫(kù)中
最近利用空閑時(shí)間自己在寫(xiě)一個(gè)文件備份工具,因?yàn)槲掖疟P(pán)上的很多文件很重要,例如很多PPT和講義。所以需要經(jīng)常備份,而且因?yàn)檫@些文件很多,所以需要增量備份。
我嘗試用過(guò)windows自帶的ntbackup工具,但感覺(jué)不是很爽。它不支持壓縮備份,而且界面也有點(diǎn)宏則復(fù)雜。
為了響應(yīng)偉大領(lǐng)袖的“自力更生,豐改衫衣足食”的號(hào)召,咱決定自己寫(xiě)一個(gè)工具,專(zhuān)門(mén)備份到數(shù)據(jù)庫(kù)。支持壓縮,支持加密,支持增量。
本文分享一下其中一些重點(diǎn)的技術(shù)細(xì)節(jié)
其中一個(gè)關(guān)鍵的技術(shù)就是將文件使用二進(jìn)制的方式存放在數(shù)據(jù)庫(kù)的varbinary(max)的字段中。該字段更大允許的長(zhǎng)度為2GB。
對(duì)于一些小文件,我們可以一次性讀取它的所有字節(jié),然后一次提交到數(shù)據(jù)庫(kù)
///
/// 這個(gè)方法演示了如何一次提交所有的字節(jié)。這樣導(dǎo)致的結(jié)果是:應(yīng)用程序立即需要申請(qǐng)等同于文件大小的內(nèi)存
///
static void SubmitFileByOnce() {
string file = @”F:\功夫熊貓.rmvb”;//文件大小為519MB
byte buffer = File.ReadAllBytes(file);
using (SqlConnection conn = new SqlConnection(“server=(local);database=demo;integrated security=true”)) {
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = “INSERT INTO Files(FileName,FileContents) VALUES(@fileName,@fileContents)”;
cmd.Parameters.AddRange(
new
{
new SqlParameter(“@fileName”,file),
new SqlParameter(“@fileContents”,buffer)
});
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
}
}
}
但是,上面的方法有幾個(gè)問(wèn)題,主要體現(xiàn)在如果文件比較大的話
1. 它需要一次性很大的內(nèi)存,具體數(shù)據(jù)等同于文件大小。因?yàn)镕ile.ReadAllBytes方法是將所有字節(jié)全部讀入到內(nèi)存。
2. 它會(huì)導(dǎo)致提交失敗,就是因?yàn)閿?shù)據(jù)太大了。數(shù)據(jù)庫(kù)也會(huì)拒絕。
那么,我就對(duì)這個(gè)方法做了一下改進(jìn),將文件拆分為5MB一段,也就是說(shuō),此時(shí)每次申請(qǐng)的內(nèi)存只有5MB。這就大大地提高了可用性。
///
/// 這個(gè)方法是將文件切分為5MB的塊,每次只是提交5MB,所以可能多次提交,但內(nèi)存占用就比較小
///
static void SubmitFileStepByStep() {
string file = @”F:\功夫熊貓.rmvb”;//以這個(gè)文件為例,大小為519MB,一共需要的時(shí)間大約94秒。還是有點(diǎn)慢的,所以還可能需要進(jìn)行壓縮
FileStream fs = new FileStream(file, FileMode.Open);
byte buffer = new byte;
int readCount;
using (SqlConnection conn = new SqlConnection(“server=(local);database=demo;integrated security=true”核絕腔))
{
conn.Open();
while ((readCount = fs.Read(buffer, 0, buffer.Length)) > 0)
{
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = “INSERT INTO Files(FileName,FileContents) VALUES(@fileName,@fileContents)”;
cmd.Parameters.AddRange(
new
{
new SqlParameter(“@fileName”,file),
new SqlParameter(“@fileContents”,buffer)
});
cmd.ExecuteNonQuery();
}
}
conn.Close();
}
}
這樣的話,有一個(gè)后果就是一個(gè)文件,可能在數(shù)據(jù)庫(kù)中會(huì)有多條記錄。所以在讀取的時(shí)候,我們需要對(duì)其進(jìn)行合并
static void DownloadFile() {
string file = @”F:\功夫熊貓.rmvb”;
string destfile = @”E:\Temp\Temp.wmv”;
using (SqlConnection conn = new SqlConnection(“server=(local);database=demo;integrated security=true”))
{
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = “SELECT FileContents FROM Files WHERE FileName=@fileName”;
cmd.Parameters.AddRange(
new
{
new SqlParameter(“@fileName”,file),
});
conn.Open();
SqlDataReader reader = cmd.ExecuteReader();
FileStream fs = new FileStream(destfile, FileMode.Append, FileAccess.Write);
while (reader.Read())
{
byte buffer = (byte)reader;
fs.Write(buffer, 0, buffer.Length);
}
fs.Close();
reader.Close();
conn.Close();
}
}
}
關(guān)于文檔型數(shù)據(jù)庫(kù)demo的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。
成都創(chuàng)新互聯(lián)科技有限公司,是一家專(zhuān)注于互聯(lián)網(wǎng)、IDC服務(wù)、應(yīng)用軟件開(kāi)發(fā)、網(wǎng)站建設(shè)推廣的公司,為客戶(hù)提供互聯(lián)網(wǎng)基礎(chǔ)服務(wù)!
創(chuàng)新互聯(lián)(www.cdcxhl.com)提供簡(jiǎn)單好用,價(jià)格厚道的香港/美國(guó)云服務(wù)器和獨(dú)立服務(wù)器。創(chuàng)新互聯(lián)成都老牌IDC服務(wù)商,專(zhuān)注四川成都IDC機(jī)房服務(wù)器托管/機(jī)柜租用。為您精選優(yōu)質(zhì)idc數(shù)據(jù)中心機(jī)房租用、服務(wù)器托管、機(jī)柜租賃、大帶寬租用,可選線路電信、移動(dòng)、聯(lián)通等。
網(wǎng)頁(yè)標(biāo)題:展示文檔型數(shù)據(jù)庫(kù)的實(shí)例【文檔型數(shù)據(jù)庫(kù)demo】(文檔型數(shù)據(jù)庫(kù)demo)
本文來(lái)源:http://www.dlmjj.cn/article/cdihghg.html


咨詢(xún)
建站咨詢(xún)
