像MongoDB, Cassandra, HBase, DynamoDB, 和
創(chuàng)新互聯(lián)建站專業(yè)為企業(yè)提供青陽網(wǎng)站建設(shè)、青陽做網(wǎng)站、青陽網(wǎng)站設(shè)計(jì)、青陽網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)與制作、青陽企業(yè)網(wǎng)站模板建站服務(wù),10余年青陽做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。
Riak這些NoSQL缺乏傳統(tǒng)的原子事務(wù)機(jī)制,所謂原子事務(wù)機(jī)制是可以保證一系列寫操作要么全部完成,要么全部不會(huì)完成,不會(huì)發(fā)生只完成一系列中一兩個(gè)
寫操作;因?yàn)閿?shù)據(jù)庫不提供這種事務(wù)機(jī)制支持,開發(fā)者需要自己編寫代碼來確保一系列寫操作的事務(wù)機(jī)制,比較復(fù)雜和測(cè)試。
這些NoSQL數(shù)據(jù)庫不提供事務(wù)機(jī)制原因在于其分布式特點(diǎn),一系列寫操作中訪問的數(shù)據(jù)可能位于不同的分區(qū)服務(wù)器,這樣的事務(wù)就變成分布式事務(wù),在分
布式事務(wù)中實(shí)現(xiàn)原子性需要彼此協(xié)調(diào),而協(xié)調(diào)是耗費(fèi)時(shí)間的,每臺(tái)機(jī)器在一個(gè)大事務(wù)過程中必須依次確認(rèn),這就需要一種協(xié)議確保一個(gè)事務(wù)中沒有任何一臺(tái)機(jī)器寫操
作失敗。
package basic;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class JDBC {
public void findAll() {
try {
// 獲得數(shù)據(jù)庫驅(qū)動(dòng)
//由于長時(shí)間不寫,驅(qū)動(dòng)名和URL都忘記了,不知道對(duì)不對(duì),你應(yīng)該知道的,自己改一下的哈
String url = "jdbc:oracle:thin:@localhost:1521:XE";
String userName = "system";
String password = "system";
Class.forName("oracle.jdbc.driver.OracleDriver");
// 創(chuàng)建連接
Connection conn = DriverManager.getConnection(url, userName,
password);
// 新建發(fā)送sql語句的對(duì)象
Statement st = conn.createStatement();
// 執(zhí)行sql
String sql = "select * from users";
ResultSet rs = st.executeQuery(sql);
// 處理結(jié)果
while(rs.next()){
//這個(gè)地方就是給你的封裝類屬性賦值
System.out.println("UserName:"+rs.getString(0));
}
// 關(guān)閉連接
rs.close();
st.close();
conn.close();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void delete(){
try {
//步驟還是那六個(gè)步驟,前邊的兩步是一樣的
String url = "jdbc:oracle:thin:@localhost:1521:XE";
String userName = "system";
String password = "system";
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection conn = DriverManager.getConnection(url,userName,password);
//這里的發(fā)送sql語句的對(duì)象是PreparedStatement,成為預(yù)處理sql對(duì)象,因?yàn)榘礂l件刪除是需要不定值的
String sql = "delete from users where id = ?";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setInt(0, 1);
int row = ps.executeUpdate();
if(row!=0){
System.out.println("刪除成功!");
}
// 關(guān)閉連接
rs.close();
st.close();
conn.close();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
NoSQL不像傳統(tǒng)關(guān)系型庫那樣有統(tǒng)一的標(biāo)準(zhǔn),也不具有普適性。所以要根據(jù)應(yīng)用和數(shù)據(jù)的存取特征來選擇適合的NoSQL。如果以前沒有接觸過NoSQL,MongoDB是一個(gè)比較好的選擇,他支持的所以和查詢能力是所有NoSQL中最強(qiáng)大的,缺點(diǎn)是索引的成本和文檔大小限制。如果是使用Hadoop大數(shù)據(jù)分析,數(shù)據(jù)基本上不存在修改,只是插入和查詢,并且需要配合Hadoop的MR任務(wù),HBase會(huì)是很好的選擇。如果要求有很強(qiáng)的擴(kuò)展能力,高并發(fā)讀寫和維護(hù)方便,Casaandra則是不錯(cuò)的選擇。當(dāng)然除了上面三個(gè)流行的NoSQL,還有很多優(yōu)秀的NoSQL數(shù)據(jù)庫,而且他們都有各自擅長領(lǐng)域,所以需要了解你們產(chǎn)品自身的特點(diǎn)然后分析選擇哪種才是最適合的,往往在大型系統(tǒng)中不是單一的數(shù)據(jù)庫,而是使用多種數(shù)據(jù)庫組合。
何玩轉(zhuǎn) NoSQL數(shù)據(jù)庫作者:IT專家中國 Weather公司CIO Bryson Koehler整理MongoDBRiakCassandra等NoSQL數(shù)據(jù)庫特性指其重要特性NoSQL限制住 Weather公司致力于氣報(bào)告氣預(yù)報(bào)業(yè)務(wù)其并缺乏數(shù)據(jù)缺乏數(shù)據(jù)管理工具需要三種同NoSQL數(shù)據(jù)庫 近我向Weather 公司CIO Bryson Koehler提疑問除公司CIO,Bryson Koehler其業(yè)務(wù)單元孵化者,包括Weather ChannelWeatherFXWeather UndergroundIntellicast等Weather公司每獲取處理著約二0萬億字節(jié)數(shù)據(jù)外提供前全球氣狀況并航空公司緊中國服務(wù)貨運(yùn)商公用事業(yè)保險(xiǎn)及線氣中國站氣應(yīng)用程序用戶提供氣預(yù)報(bào)服務(wù)每需求增加數(shù)十億氣數(shù)據(jù)請(qǐng)求并且預(yù)期響應(yīng)間要一0毫秒左右 RiakWeather 公司臺(tái)NoSQL數(shù)據(jù)庫服務(wù)于公司事務(wù)性存儲(chǔ)公用中國絡(luò)(SUN)數(shù)據(jù)獲取平臺(tái)運(yùn)行亞馬遜中國絡(luò)服務(wù)(AWS)用區(qū)域并每一5頻率捕獲超二0億氣象數(shù)據(jù)信息所Riak具明確處理規(guī)模該公司使用Cassandra及新近添加MongoDB數(shù)據(jù)庫Weather中國 IOSAndroid移應(yīng)用程序服務(wù) Weather 公司使用同產(chǎn)品Koehler解釋說同工具同優(yōu)勢(shì) Cassandra服務(wù)于Weather 公司及全球消費(fèi)者使用第三氣應(yīng)用API數(shù)據(jù):我數(shù)據(jù)發(fā)平臺(tái)每秒處理數(shù)十萬事務(wù)我發(fā)現(xiàn)Cassandra用于全球發(fā)數(shù)據(jù)棒解決案并且[數(shù)據(jù)庫]讀取面體現(xiàn)高用性 本質(zhì)全球各消費(fèi)者所使用數(shù)據(jù)服務(wù)包括Weather 公司第三氣應(yīng)用程序 MongoDB提供Weather中國中國站移應(yīng)用程序間層緩存功能:離我核API我沒全部Weather中國內(nèi)容所MongoDB容器發(fā)站W(wǎng)eather中國及AndroidiOS移應(yīng)用程序服務(wù)Mongo處些處基于其內(nèi)建JSON格式及靈性 Riak用于消費(fèi)氣象數(shù)據(jù)觀測(cè)包括自世界各圖片視頻等:我喜Riak其優(yōu)秀數(shù)據(jù)攝取能力且種全球布式式實(shí)現(xiàn)于全球布式平臺(tái)獲取數(shù)據(jù)入站式數(shù)據(jù)庫真靠選擇 我曾聽說DatastaxBashoCouchbase高管貶低MongoDB擴(kuò)展性MongoDB指向規(guī)模部署Facebook超二00萬臺(tái)移設(shè)備應(yīng)用程序提供支持eHarmony公司MongDB每處理著數(shù)十億潛比賽預(yù)約據(jù)Koehle所述MongoDBWeather中國Weather中國移應(yīng)用程序處理著每十億交易毫疑問通配置部署Mongo處理批量交易數(shù)據(jù) 盡管Koehler承認(rèn)樂于看MongoDB繼續(xù)使全球集群位置[功能]更加縫化且易于使用 些屬于全球性布式集群復(fù)制負(fù)載平衡CassandraRiak眾所周知功能 規(guī)模討論角度看少公司達(dá)Weather公司經(jīng)營規(guī)模易于發(fā)架構(gòu)靈性JSON數(shù)據(jù)處理使MongoDB世界流行NoSQL數(shù)據(jù)庫微軟IBM都進(jìn)行MongoDB模仿微軟Azure DocumentDBIBM CloudantCassandraRiak Weather公司三NoSQL標(biāo)準(zhǔn)降低至兩程鞏固Koehler說公司沒準(zhǔn)備做 由于我構(gòu)造由許同數(shù)據(jù)解決案組中國狀結(jié)構(gòu)我目前環(huán)境已于復(fù)雜說我希望給團(tuán)隊(duì)些自由空間讓我解所選擇利弊看些整合 候遷移件難事關(guān)于NoSQL數(shù)據(jù)庫重要事情困其 Koehler說架構(gòu)編碼確數(shù)據(jù)庫遷移另并難隨著模式自由及數(shù)據(jù)轉(zhuǎn)存技術(shù)發(fā)展論前者key-value存儲(chǔ)或其形式轉(zhuǎn)儲(chǔ)數(shù)據(jù)都十容易 特定產(chǎn)品進(jìn)程自定義編碼復(fù)雜存儲(chǔ)程已經(jīng)復(fù)返Koehler說關(guān)于結(jié)構(gòu)化編碼確需要考慮?做避免特殊供應(yīng)商提供工具功能能讓身陷其舉亞馬遜中國絡(luò)服務(wù)(AWS)消息服務(wù)例 必讓服務(wù)云運(yùn)行解釋說部署自RabbitMQ環(huán)境陷于其所原先部署AWS 應(yīng)用程序轉(zhuǎn)部署谷歌計(jì)算云服務(wù)論數(shù)據(jù)平臺(tái)存儲(chǔ)環(huán)境或云計(jì)算環(huán)境都要?jiǎng)e讓自局限僅由供應(yīng)商提供范圍空間內(nèi) 轉(zhuǎn)
1 . nosql不用設(shè)計(jì),增加屬性后就增加了一個(gè)字段。只要關(guān)系自己的業(yè)務(wù)對(duì)象需要怎么設(shè)計(jì)就好。
一般將NoSQL數(shù)據(jù)庫分為四大類:鍵值(Key-Value)存儲(chǔ)數(shù)據(jù)庫、列存儲(chǔ)數(shù)據(jù)庫、文檔型數(shù)據(jù)庫和圖形(Graph)數(shù)據(jù)庫。它們的數(shù)據(jù)模型、優(yōu)缺點(diǎn)、典型應(yīng)用場(chǎng)景。
鍵值(Key-Value)存儲(chǔ)數(shù)據(jù)庫Key指向Value的鍵值對(duì),通常用hash表來實(shí)現(xiàn)查找速度快數(shù)據(jù)無結(jié)構(gòu)化(通常只被當(dāng)作字符串或者二進(jìn)制數(shù)據(jù))內(nèi)容緩存,主要用于處理大量數(shù)據(jù)的高訪問負(fù)載,也用于一些日志系統(tǒng)等。
列存儲(chǔ)數(shù)據(jù)庫,以列簇式存儲(chǔ),將同一列數(shù)據(jù)存在一起查找速度快,可擴(kuò)展性強(qiáng),更容易進(jìn)行分布式擴(kuò)展功能相對(duì)局限分布式的文件系統(tǒng)。
文檔型數(shù)據(jù)庫,Key-Value對(duì)應(yīng)的鍵值對(duì),Value為結(jié)構(gòu)化數(shù)據(jù),數(shù)據(jù)結(jié)構(gòu)要求不嚴(yán)格,表結(jié)構(gòu)可變(不需要像關(guān)系型數(shù)據(jù)庫一樣需預(yù)先定義表結(jié)構(gòu)),查詢性能不高,而且缺乏統(tǒng)一的查詢語法,Web應(yīng)用。
圖形(Graph)數(shù)據(jù)庫,圖結(jié)構(gòu),利用圖結(jié)構(gòu)相關(guān)算法(如最短路徑尋址,N度關(guān)系查找等),很多時(shí)候需要對(duì)整個(gè)圖做計(jì)算才能得出需要的信息,而且這種結(jié)構(gòu)不太好做分布式的集群方案,社交網(wǎng)絡(luò),推薦系統(tǒng)等。