日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢(xún)
選擇下列產(chǎn)品馬上在線(xiàn)溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
深入了解Java嵌入式KV數(shù)據(jù)庫(kù)的秘密(java嵌入式kv數(shù)據(jù)庫(kù))

隨著計(jì)算機(jī)技術(shù)的不斷發(fā)展,數(shù)據(jù)存儲(chǔ)和處理需求的也越來(lái)越多,而嵌入式KV數(shù)據(jù)庫(kù)則成為了一個(gè)備受關(guān)注的數(shù)據(jù)存儲(chǔ)解決方案。在眾多的嵌入式KV數(shù)據(jù)庫(kù)中,Java嵌入式KV數(shù)據(jù)庫(kù)是一款備受推崇的物聯(lián)網(wǎng)設(shè)備數(shù)據(jù)庫(kù)。

創(chuàng)新互聯(lián)建站專(zhuān)注于阜康企業(yè)網(wǎng)站建設(shè),成都響應(yīng)式網(wǎng)站建設(shè)公司,商城開(kāi)發(fā)。阜康網(wǎng)站建設(shè)公司,為阜康等地區(qū)提供建站服務(wù)。全流程定制網(wǎng)站建設(shè),專(zhuān)業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)建站專(zhuān)業(yè)和態(tài)度為您提供的服務(wù)

本文將從以下幾個(gè)方面:

一、什么是Java嵌入式KV數(shù)據(jù)庫(kù)

Java嵌入式KV數(shù)據(jù)庫(kù)是一種使用Java語(yǔ)言編寫(xiě)的,嵌入式KV存儲(chǔ)引擎。它是基于B+樹(shù)存儲(chǔ)、LRU淘汰策略的一種輕量級(jí)、高性能的存儲(chǔ)引擎,可以將數(shù)據(jù)存儲(chǔ)在內(nèi)存或本地磁盤(pán)中。Java嵌入式KV數(shù)據(jù)庫(kù)在存儲(chǔ)數(shù)據(jù)方面有很多優(yōu)點(diǎn),例如高吞吐量、嵌入式、易用性等。

二、Java嵌入式KV數(shù)據(jù)庫(kù)的特點(diǎn)

1.高性能:Java嵌入式KV數(shù)據(jù)庫(kù)以高速度和高吞吐量的方式完成數(shù)據(jù)存儲(chǔ)和管理。

2.嵌入式:Java嵌入式KV數(shù)據(jù)庫(kù)可以輕松地集成到應(yīng)用程序中,不需要獨(dú)立的數(shù)據(jù)庫(kù)服務(wù)器。

3.易于使用:Java嵌入式KV數(shù)據(jù)庫(kù)提供了簡(jiǎn)單易用的API,并支持類(lèi)SQL的查詢(xún)和數(shù)據(jù)分析。

4.可伸縮性:Java嵌入式KV數(shù)據(jù)庫(kù)支持分布式數(shù)據(jù)存儲(chǔ)和多種分片策略,可以滿(mǎn)足更大規(guī)模的應(yīng)用需求。

5.數(shù)據(jù)一致性:Java嵌入式KV數(shù)據(jù)庫(kù)支持ACID事務(wù),可以確保數(shù)據(jù)的一致性和完整性。

三、Java嵌入式KV數(shù)據(jù)庫(kù)的應(yīng)用場(chǎng)景

Java嵌入式KV數(shù)據(jù)庫(kù)可以應(yīng)用于很多場(chǎng)景,例如:

1.物聯(lián)網(wǎng)設(shè)備:Java嵌入式KV數(shù)據(jù)庫(kù)的小時(shí)尺寸、節(jié)能和高性能的特性,可以滿(mǎn)足物聯(lián)網(wǎng)設(shè)備的高效、高速的數(shù)據(jù)存儲(chǔ)要求。

2.移動(dòng)應(yīng)用程序:Java嵌入式KV數(shù)據(jù)庫(kù)可以輕松地集成到移動(dòng)應(yīng)用程序中,不需要獨(dú)立的數(shù)據(jù)庫(kù)服務(wù)器,可以輕易地存儲(chǔ)和管理數(shù)據(jù)。

3.游戲開(kāi)發(fā):Java嵌入式KV數(shù)據(jù)庫(kù)可以高效的存儲(chǔ)和訪(fǎng)問(wèn)游戲的數(shù)據(jù),例如玩家數(shù)據(jù)、游戲設(shè)置等。

4.本地緩存:Java嵌入式KV數(shù)據(jù)庫(kù)可以作為本地緩存存儲(chǔ)引擎,為應(yīng)用程序提供更快的響應(yīng)速度。

四、Java嵌入式KV數(shù)據(jù)庫(kù)的優(yōu)勢(shì)

Java嵌入式KV數(shù)據(jù)庫(kù)相對(duì)于傳統(tǒng)關(guān)系型數(shù)據(jù)庫(kù)(RDBMS)具有以下優(yōu)勢(shì):

1.高性能:Java嵌入式KV數(shù)據(jù)庫(kù)由于采用的是內(nèi)存存儲(chǔ)和B+樹(shù)索引,具有更高的讀寫(xiě)速度。

2.易維護(hù):Java嵌入式KV數(shù)據(jù)庫(kù)不需要獨(dú)立的數(shù)據(jù)庫(kù)服務(wù)器,具有更低的維護(hù)成本。

3.可擴(kuò)展性:Java嵌入式KV數(shù)據(jù)庫(kù)可以容易地進(jìn)行分布式擴(kuò)展。

4.易使用:Java嵌入式KV數(shù)據(jù)庫(kù)具有類(lèi)SQL的查詢(xún)語(yǔ)言、簡(jiǎn)單易用的API和圖形化的管理工具。

5.節(jié)能環(huán)保:Java嵌入式KV數(shù)據(jù)庫(kù)具有更小的存儲(chǔ)空間和較低的能耗,對(duì)環(huán)境更加友好。

五、結(jié)論

Java嵌入式KV數(shù)據(jù)庫(kù)是一款輕量級(jí)、高性能、易用的數(shù)據(jù)庫(kù)解決方案,可以應(yīng)用于很多場(chǎng)景,如物聯(lián)網(wǎng)設(shè)備、移動(dòng)應(yīng)用程序、游戲開(kāi)發(fā)和本地緩存等。相較于傳統(tǒng)的關(guān)系型數(shù)據(jù)庫(kù)具有更高的性能、更低的維護(hù)成本、更好的可擴(kuò)展性和更加友好的環(huán)保性。因此,在應(yīng)用場(chǎng)景滿(mǎn)足要求時(shí),Java嵌入式KV數(shù)據(jù)庫(kù)是一個(gè)非常值得選擇的存儲(chǔ)引擎。

成都網(wǎng)站建設(shè)公司-創(chuàng)新互聯(lián)為您提供網(wǎng)站建設(shè)、網(wǎng)站制作、網(wǎng)頁(yè)設(shè)計(jì)及定制高端網(wǎng)站建設(shè)服務(wù)!

java 6 中自帶的javaDB(derby)數(shù)據(jù)庫(kù),是否不用啟動(dòng)服務(wù),直接可以和jdk進(jìn)行交互呀?

derby, 前兩天仔芹宏細(xì)看了一下居然是以前的cloudspace,以前就出名了,笑液后來(lái)幾經(jīng)轉(zhuǎn)手倒賣(mài),最后被ibm捐贈(zèng)給apache了。

sun挺讓人失望的,應(yīng)該嵌入一個(gè)oo數(shù)據(jù)庫(kù),比如db4o之嫌升冊(cè)類(lèi)的。搞這么個(gè)雞肋真是無(wú)聊。

新安裝了 JDK 6 的程序員們也許會(huì)發(fā)現(xiàn),除了傳統(tǒng)的 bin、jre 等目錄,JDK 6 新增了一個(gè)名為 db 的目錄。這便是 Java 6 的新成員:Java DB。這是一個(gè)純 Java 實(shí)現(xiàn)、開(kāi)源的數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS),源于 Apache 軟件基金會(huì)(ASF)名下的項(xiàng)目 Derby。它只有 2MB 大小,對(duì)比動(dòng)輒上 G 的數(shù)據(jù)庫(kù)來(lái)說(shuō)可謂袖珍。但這并不妨礙 Derby 功能齊備,支持幾乎大部分的數(shù)據(jù)庫(kù)應(yīng)用所需要的特性。更難能可貴的是,依托于 ASF 強(qiáng)大的社區(qū)力量,Derby 得到了包括 IBM 和 Sun 等大公司以及全世界優(yōu)秀程序員們的支持。這也難怪 Sun 公司會(huì)選擇其 10.2.2 版本納入到 JDK 6 中,作為內(nèi)嵌的數(shù)據(jù)庫(kù)。這就好像為 JDK 注入了一股全新的活力:Java 程序員不再需要耗費(fèi)大量精力安裝和配置數(shù)據(jù)庫(kù),就能進(jìn)行安全、易用、標(biāo)準(zhǔn)、并且免費(fèi)的數(shù)據(jù)庫(kù)編程。在這一章中吵櫻純,我們將初窺 Java DB 的世界,來(lái)探究如何使用它編寫(xiě)出功能豐富的程序。

Hello, Java DB:內(nèi)嵌模式的 Derby

既然有了內(nèi)嵌(embedded)的數(shù)據(jù)庫(kù),就讓我們從一個(gè)簡(jiǎn)單的范例開(kāi)始,試著使用它吧。這個(gè)程序做了升咐大多數(shù)數(shù)據(jù)庫(kù)應(yīng)用都可能會(huì)做的操作:在 DBMS 中創(chuàng)建了一個(gè)名為 helloDB 的數(shù)據(jù)庫(kù);創(chuàng)建了一張數(shù)據(jù)表,取名為 hellotable;向表內(nèi)插入了兩條數(shù)據(jù);然后,查詢(xún)數(shù)據(jù)并將結(jié)果打印在控制臺(tái)上;最后,刪除表和數(shù)據(jù)庫(kù),釋放資源。

public class HelloJavaDB {

public static void main(String args) {

try { // load the driver

Class.forName(“org.apache.derby.jdbc.EmbeddedDriver”).newInstance();

System.out.println(“Load the embedded driver”);

Connection conn = null;

Properties props = new Properties();

props.put(“user”頌游, “user1”); props.put(“password”, “user1”);

//create and connect the database named helloDB

conn=DriverManager.getConnection(“jdbc:derby:helloDB;create=true”, props);

System.out.println(“create and connect to helloDB”);

conn.setAutoCommit(false);

// create a table and insert two records

Statement s = conn.createStatement();

s.execute(“create table hellotable(name varchar(40), score int)”);

System.out.println(“Created table hellotable”);

s.execute(“insert into hellotable values(‘Ruth Cao’, 86)”);

s.execute(“insert into hellotable values (‘Flora Shi’, 92)”);

// list the two records

ResultSet rs = s.executeQuery(

“SELECT name, score FROM hellotable ORDER BY score”);

System.out.println(“namettscore”);

while(rs.next()) {

StringBuilder builder = new StringBuilder(rs.getString(1));

builder.append(“t”);

builder.append(rs.getInt(2));

System.out.println(builder.toString());

}

// delete the table

s.execute(“drop table hellotable”);

System.out.println(“Dropped table hellotable”);

rs.close();

s.close();

System.out.println(“Closed result set and statement”);

conn.commit();

conn.close();

System.out.println(“Committed transaction and closed connection”);

try { // perform a clean shutdown

DriverManager.getConnection(“jdbc:derby:;shutdown=true”);

} catch (SQLException se) {

System.out.println(“Database shut down normally”);

}

} catch (Throwable e) {

// handle the exception

}

System.out.println(“SimpleApp finished”);

}

}

隨后,我們?cè)诿钚校ū纠秊?Windows 平臺(tái),當(dāng)然,其它系統(tǒng)下稍作改動(dòng)即可)下鍵入以下命令:

清單 2. 運(yùn)行 HelloJavaDB 命令

java –cp .;%JAVA_HOME%dblibderby.jar HelloJavaDB

圖 1. HelloJavaDB 程序的執(zhí)行結(jié)果

上述的程序和以往沒(méi)什么區(qū)別。不同的是我們不需要再為 DBMS 的配置而勞神,因?yàn)?Derby 已經(jīng)自動(dòng)地在當(dāng)前目錄下新建了一個(gè)名為 helloDB 的目錄,來(lái)物理地存儲(chǔ)數(shù)據(jù)和日志。需要做的只是注意命名問(wèn)題:在內(nèi)嵌模式下驅(qū)動(dòng)的名字應(yīng)為 org.apache.derby.jdbc.EmbeddedDriver;創(chuàng)建一個(gè)新數(shù)據(jù)庫(kù)時(shí)需要在協(xié)議后加入 create=true。另外,關(guān)閉所有數(shù)據(jù)庫(kù)以及 Derby 的引擎可以使用以下代碼:

清單 3. 關(guān)閉所有數(shù)據(jù)庫(kù)及 Derby 引擎

DriverManager.getConnection(“jdbc:derby:;shutdown=true”);

如果只想關(guān)閉一個(gè)數(shù)據(jù)庫(kù),那么則可以調(diào)用:

清單 4. 關(guān)閉一個(gè)數(shù)據(jù)庫(kù)

DriverManager.getConnection(“jdbc:derby:helloDB;shutdown=true “);

這樣,使用嵌入模式的 Derby 維護(hù)和管理數(shù)據(jù)庫(kù)的成本接近于 0。這對(duì)于希望專(zhuān)心寫(xiě)代碼的人來(lái)說(shuō)不失為一個(gè)好消息。然而有人不禁要問(wèn):既然有了內(nèi)嵌模式,為什么大多數(shù)的 DBMS 都沒(méi)有采取這樣的模式呢?不妨做一個(gè)小實(shí)驗(yàn)。當(dāng)我們同時(shí)在兩個(gè)命令行窗口下運(yùn)行 HelloJavaDB 程序。結(jié)果一個(gè)的結(jié)果與剛才一致,而另一個(gè)卻出現(xiàn)了錯(cuò)誤,如 圖 2 所示。

圖 2. 內(nèi)嵌模式的局限

錯(cuò)誤的原因其實(shí)很簡(jiǎn)單:在使用內(nèi)嵌模式時(shí),Derby 本身并不會(huì)在一個(gè)獨(dú)立的進(jìn)程中,而是和應(yīng)用程序一起在同一個(gè) Java 虛擬機(jī)(JVM)里運(yùn)行。因此,Derby 如同應(yīng)用所使用的其它 jar 文件一樣變成了應(yīng)用的一部分。這就不難理解為什么在 classpath 中加入 derby 的 jar 文件,我們的示例程序就能夠順利運(yùn)行了。這也說(shuō)明了只有一個(gè) JVM 能夠啟動(dòng)數(shù)據(jù)庫(kù):而兩個(gè)跑在不同 JVM 實(shí)例里的應(yīng)用自然就不能夠訪(fǎng)問(wèn)同一個(gè)數(shù)據(jù)庫(kù)了。

鑒于上述的局限性,和來(lái)自不同 JVM 的多個(gè)連接想訪(fǎng)問(wèn)一個(gè)數(shù)據(jù)庫(kù)的需求,下一節(jié)將介紹 Derby 的另一種模式:網(wǎng)絡(luò)服務(wù)器(Network Server)。

網(wǎng)絡(luò)服務(wù)器模式

如上所述,網(wǎng)絡(luò)服務(wù)器模式是一種更為傳統(tǒng)的客戶(hù)端/服務(wù)器模式。我們需要啟動(dòng)一個(gè) Derby 的網(wǎng)絡(luò)服務(wù)器用于處理客戶(hù)端的請(qǐng)求,不論這些請(qǐng)求是來(lái)自同一個(gè) JVM 實(shí)例,還是來(lái)自于網(wǎng)絡(luò)上的另一臺(tái)機(jī)器。同時(shí),客戶(hù)端使用 DRDA(Distributed Relational Database Architecture)協(xié)議連接到服務(wù)器端。這是一個(gè)由 The Open Group 倡導(dǎo)的數(shù)據(jù)庫(kù)交互標(biāo)準(zhǔn)。圖 3 說(shuō)明了該模式的大體結(jié)構(gòu)。

由于 Derby 的開(kāi)發(fā)者們努力使得網(wǎng)絡(luò)服務(wù)器模式與內(nèi)嵌模式之間的差異變小,使得我們只需簡(jiǎn)單地修改 清單 1 中的程序就可以實(shí)現(xiàn)。如清單 5所示,我們?cè)?HelloJavaDB 中增添了一個(gè)新的函數(shù)和一些字符串變量。不難看出,新的代碼只是將一些在上一節(jié)中特別指出的字符串進(jìn)行了更改:驅(qū)動(dòng)類(lèi)為 org.apache.derby.jdbc.ClientDriver,而連接數(shù)據(jù)庫(kù)的協(xié)議則變成了 jdbc: URL 的字符串,而事實(shí)上,Derby 網(wǎng)絡(luò)的客戶(hù)端的連接格式為:jdbc: /databaseName。在這個(gè)例子中,我們使用了最簡(jiǎn)單的本地機(jī)器作為服務(wù)器,而端口則是 Derby 默認(rèn)的 1527 端口。

圖 3. Derby 網(wǎng)絡(luò)服務(wù)器模式架構(gòu)

清單 5. 網(wǎng)絡(luò)服務(wù)器模式下的 HelloJavaDB

public class HelloJavaDB {

public static String driver = “org.apache.derby.jdbc.EmbeddedDriver”;

public static String protocol = “jdbc:derby:”;

public static void main(String args) {

// same as before

}

private static void parseArguments(String args) {

if (args.length == 0 || args.length > 1) {

return;

}

if (args.equalsIgnoreCase(“derbyclient”)) {

framework = “derbyclient”;

driver = “org.apache.derby.jdbc.ClientDriver”;

protocol = “jdbc:

}

}

}

當(dāng)然,僅僅有客戶(hù)端是不夠的,我們還需要啟動(dòng)網(wǎng)絡(luò)服務(wù)器。Derby 中控制網(wǎng)絡(luò)服務(wù)器的類(lèi)是 org.apache.derby.drda.NetworkServerControl,因此鍵入以下命令即可。如果想了解 NetworkServerControl 更多的選項(xiàng),只要把 start 參數(shù)去掉就可以看到幫助信息了。關(guān)于網(wǎng)絡(luò)服務(wù)器端的實(shí)現(xiàn),都被 Derby 包含在 derbynet.jar 里。

清單 6. 啟動(dòng)網(wǎng)絡(luò)服務(wù)器

java -cp .;”C:Program FilesJavajdk1.6.0dblibderby.jar”;

“C:Program FilesJavajdk1.6.0dblibderbynet.jar”

org.apache.derby.drda.NetworkServerControl start

相對(duì)應(yīng)的,網(wǎng)絡(luò)客戶(hù)端的實(shí)現(xiàn)被包含在 derbyclient.jar 中。所以,只需要在 classpath 中加入該 jar 文件,修改后的客戶(hù)端就可以順利地讀取數(shù)據(jù)了。再一次嘗試著使用兩個(gè)命令行窗口去連接數(shù)據(jù)庫(kù),就能夠得到正確的結(jié)果了。如果不再需要服務(wù)器,那么使用 NetworkServerControl 的 shutdown 參數(shù)就能夠關(guān)閉服務(wù)器。

更多

至此,文章介紹了 Java SE 6 中的新成員:Java DB(Derby),也介紹了如何在內(nèi)嵌模式以及網(wǎng)絡(luò)服務(wù)器模式下使用 Java DB。當(dāng)然這只是淺嘗輒止,更多高級(jí)的選項(xiàng)還需要在 Sun 和 Derby 的文檔中尋找。在這一章的最后,我們將簡(jiǎn)單介紹幾個(gè) Java DB 的小工具來(lái)加快開(kāi)發(fā)速度。它們都位于 org.apache.derby.tools 包內(nèi),在開(kāi)發(fā)過(guò)程中需要獲取信息或者測(cè)試可以用到。

? ij:一個(gè)用來(lái)運(yùn)行 SQL 腳本的工具;

? dblook:為 Derby 數(shù)據(jù)庫(kù)作模式提?。⊿chema extraction),生成 DDL 的工具;

java 嵌入式 kv數(shù)據(jù)庫(kù)的介紹就聊到這里吧,感謝你花時(shí)間閱讀本站內(nèi)容,更多關(guān)于java 嵌入式 kv數(shù)據(jù)庫(kù),深入了解Java嵌入式KV數(shù)據(jù)庫(kù)的秘密,java 6 中自帶的javaDB(derby)數(shù)據(jù)庫(kù),是否不用啟動(dòng)服務(wù),直接可以和jdk進(jìn)行交互呀?的信息別忘了在本站進(jìn)行查找喔。

創(chuàng)新互聯(lián)(cdcxhl.com)提供穩(wěn)定的云服務(wù)器,香港云服務(wù)器,BGP云服務(wù)器,雙線(xiàn)云服務(wù)器,高防云服務(wù)器,成都云服務(wù)器,服務(wù)器托管。精選鉅惠,歡迎咨詢(xún):028-86922220。


新聞標(biāo)題:深入了解Java嵌入式KV數(shù)據(jù)庫(kù)的秘密(java嵌入式kv數(shù)據(jù)庫(kù))
文章源于:http://www.dlmjj.cn/article/djdgpho.html