成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Java開發(fā)人員需要了解的地域分布數(shù)據(jù)庫

譯文 精選
大數(shù)據(jù) 數(shù)據(jù)倉庫 數(shù)據(jù)庫 開發(fā)
一個(gè)有用的啟動板,在Java中連接和進(jìn)行CRUD 操作的地域分布數(shù)據(jù)庫。

在過去的七年里,我一直在使用分布式系統(tǒng)、平臺和數(shù)據(jù)庫。早在2015年,許多架構(gòu)師就開始使用分布式數(shù)據(jù)庫擴(kuò)展單個(gè)機(jī)器或服務(wù)器的邊界。他們選擇這樣的數(shù)據(jù)庫是因?yàn)樗乃娇缮炜s性,盡管它的性能依然只能與傳統(tǒng)的單服務(wù)器數(shù)據(jù)庫相媲美。 

現(xiàn)在,隨著云原生應(yīng)用程序和無服務(wù)器架構(gòu)的興起,分布式數(shù)據(jù)庫需要做的不僅僅是提供橫向可伸縮性。架構(gòu)師需要在主要云區(qū)中斷期間能夠保持可用的數(shù)據(jù)庫,支持混合云部署,并為接近客戶和最終用戶的數(shù)據(jù)提供服務(wù)。這就是地域分布數(shù)據(jù)庫發(fā)揮作用的地方。 

作為一名Java開發(fā)人員,我有兩個(gè)問題:

1. 我應(yīng)該投入多少精力為云原生地域分布數(shù)據(jù)庫創(chuàng)建應(yīng)用程序?

2. 這只是對我現(xiàn)有應(yīng)用程序的快速重構(gòu)還是徹底重新設(shè)計(jì)/重寫?

工作量因用例而異。但即便如此,在構(gòu)建一個(gè)簡單的應(yīng)用程序時(shí),你也可以從“入門”體驗(yàn)中學(xué)到很多東西。在這篇文章中,我將分享使用YugabyteDB作為地域分布數(shù)據(jù)庫創(chuàng)建Java應(yīng)用程序時(shí)的主要見解。你可以在GitHub上找到完整的源代碼。現(xiàn)在讓我們開始吧!

數(shù)據(jù)庫部署

YugabyteDB提供完全托管的云版本,支持AWS和GCE,類似于其他云原生數(shù)據(jù)庫。作為開發(fā)人員,這對我來說意義重大。我只想運(yùn)行一個(gè)實(shí)例,以使我可以專注于應(yīng)用程序邏輯。

最后,我花了幾分鐘在AWS上啟動一個(gè)免費(fèi)實(shí)例,并將連接信息復(fù)制到我的應(yīng)用程序。正如預(yù)期的那樣,體驗(yàn)是順利而快捷的。在編寫一行代碼之前,我必須下載、安裝和配置數(shù)據(jù)庫的日子已經(jīng)一去不復(fù)返了。

數(shù)據(jù)庫連接

作為一名后端開發(fā)人員,我很感激有一個(gè)原生使用SQL的數(shù)據(jù)庫。這縮短了學(xué)習(xí)曲線,讓我可以重用現(xiàn)有的邏輯。盡管我使用Spring Data或Micronaut,我仍然編寫和執(zhí)行直接的SQL查詢。

只要YugabyteDB使用Postgres方言,我想我的簡單Java應(yīng)用程序就可以通過一個(gè)很好的老JDBC接口連接到正在運(yùn)行的數(shù)據(jù)庫實(shí)例。使用Yugabyteb,你可以選擇標(biāo)準(zhǔn)PostgreSQL JDBC驅(qū)動程序或帶有一些性能優(yōu)勢的原生Yugabyte JDBC驅(qū)動程序。我選擇了后者。

幾分鐘后,我把筆記本電腦的IP地址添加到Y(jié)ugabyte Cloud的IP允許列表中。我還編譯和啟動了示例應(yīng)用程序,并成功地連接到云實(shí)例。JDBC連接邏輯與MySQL、Postgres和其他關(guān)系數(shù)據(jù)庫要求我遵循的邏輯沒有什么不同。這是一個(gè)非常好的跡象。

YBClusterAwareDataSource ds = new YBClusterAwareDataSource();

ds.setUrl("jdbc:yugabytedb://" + settings.getProperty("host") + ":"
+ settings.getProperty("port") + "/yugabyte");
ds.setUser(settings.getProperty("dbUser"));
ds.setPassword(settings.getProperty("dbPassword"));

// Additional SSL-specific settings. See the source code for details.

Connection conn = ds.getConnection();

更好的是,雖然我的測試使用了一個(gè)免費(fèi)的單節(jié)點(diǎn)實(shí)例,但是,就算我的數(shù)據(jù)庫中有60個(gè)節(jié)點(diǎn)跨越幾個(gè)大洲,連接邏輯仍然保持不變。對于應(yīng)用程序開發(fā)人員來說,YugabyteDB是一個(gè)單一的邏輯實(shí)例,所有與數(shù)據(jù)分區(qū)、節(jié)點(diǎn)間通信和分布式查詢執(zhí)行相關(guān)的復(fù)雜性都是在幕后透明地進(jìn)行。

基本CRUD操作

建立連接邏輯后,我介紹幾個(gè)方法,通過JDBC連接,創(chuàng)建示例表然后查詢和更新其記錄。這意味著我的簡單Java應(yīng)用程序必須盡可能初級。因此,我選擇了一個(gè)非常基本的用例:兩個(gè)帳戶之間的資金轉(zhuǎn)移。

示例表是用標(biāo)準(zhǔn)的CREATE TABLE命令創(chuàng)建:

Statement stmt = conn.createStatement();

stmt.execute("CREATE TABLE IF NOT EXISTS " + TABLE_NAME +
"(" +
"id int PRIMARY KEY," +
"name varchar," +
"age int," +
"country varchar," +
"balance int" +
    ")");

并且只填充了兩記錄(足以評估入門體驗(yàn)):

stmt.execute("INSERT INTO " + TABLE_NAME + " VALUES" +
"(1, 'Jessica', 28, 'USA', 10000)," +
    "(2, 'John', 28, 'Canada', 9000)");

最后,在Postgres或MySQL中查詢和更新類似表的SQL查詢在我的地域分布數(shù)據(jù)庫中的工作方式是相同的。以下是兩種方法的完整實(shí)現(xiàn):第一種方法查詢分布式記錄,第二種方法使用分布式事務(wù)一致地更新記錄:

private static void selectAccounts(Connection conn) throws SQLException {
Statement stmt = conn.createStatement();

ResultSet rs = stmt.executeQuery("SELECT * FROM " + TABLE_NAME);

while (rs.next()) {
System.out.println(String.format("name = %s, age = %s, country = %s, balance = %s",
rs.getString(2), rs.getString(3), rs.getString(4), rs.getString(5)));
}
}

private static void transferMoneyBetweenAccounts(Connection conn, int amount) throws SQLException {
Statement stmt = conn.createStatement();

try {
stmt.execute(
"BEGIN TRANSACTION;" +
"UPDATE " + TABLE_NAME + " SET balance = balance - " + amount + "" + " WHERE name = 'Jessica';" +
"UPDATE " + TABLE_NAME + " SET balance = balance + " + amount + "" + " WHERE name = 'John';" +
"COMMIT;"
);
} catch (SQLException e) {
if (e.getErrorCode() == 40001) {
// The operation aborted due to a concurrent transaction trying to modify the same set of rows.
// Consider adding retry logic for production-grade applications.
e.printStackTrace();
} else {
throw e;
}
}

System.out.println();
System.out.println(">>>> Transferred " + amount + " between accounts.");
}

結(jié)束語

我很高興地確認(rèn),現(xiàn)代地域分布數(shù)據(jù)庫的創(chuàng)建者保護(hù)我(應(yīng)用程序開發(fā)人員)免受與分布式系統(tǒng)相關(guān)的大多數(shù)復(fù)雜性的影響。我在一分鐘內(nèi)啟動了一個(gè)分布式數(shù)據(jù)庫實(shí)例,作為單個(gè)邏輯實(shí)例連接,并通過熟悉的SQL和JDBC接口查詢數(shù)據(jù)庫。我承認(rèn),我的簡單Java應(yīng)用程序遠(yuǎn)不是一個(gè)包含底層、特定于數(shù)據(jù)庫的優(yōu)化的實(shí)際解決方案。然而,入門就像單服務(wù)器數(shù)據(jù)庫一樣簡單,這很重要。 

你可以在GitHub上找到我的完整應(yīng)用程序。我鼓勵(lì)你嘗試自己運(yùn)行它。 

譯者介紹

楊曉娟,51CTO社區(qū)編輯,西安電子科技大學(xué)計(jì)算機(jī)專業(yè)碩士研究生,資深研發(fā)工程師,信息系統(tǒng)項(xiàng)目管理師,擁有近20年Java開發(fā)經(jīng)驗(yàn)。分別在NEC、甲骨文、英方從事數(shù)據(jù)存儲、Oracle數(shù)據(jù)庫的數(shù)據(jù)遷移以及同構(gòu)/異構(gòu)數(shù)據(jù)庫復(fù)制等研發(fā)工作,尤其在數(shù)據(jù)庫、數(shù)據(jù)編碼等方面有深入鉆研和了解。

原文標(biāo)題:??What Java Developers Need to Know About Geo-Distributed Databases??,作者:Denis Magda

責(zé)任編輯:莫奇 來源: 51CTO
相關(guān)推薦

2018-09-25 08:33:38

數(shù)據(jù)庫鎖JavaSQL

2020-08-24 15:05:38

iOS 14 beta蘋果更新

2023-12-14 11:39:57

2016-10-14 19:30:21

云計(jì)算云數(shù)據(jù)庫數(shù)據(jù)庫

2016-11-09 13:46:00

云數(shù)據(jù)庫

2023-04-21 14:51:34

開發(fā)數(shù)據(jù)庫

2022-08-31 15:45:57

Django數(shù)據(jù)庫優(yōu)化

2024-06-13 10:08:51

2019-02-01 10:56:04

2017-10-24 11:59:41

JavaScript

2021-12-10 23:48:19

Java開發(fā)技術(shù)

2019-06-03 14:20:30

Java數(shù)據(jù)庫大數(shù)據(jù)工具

2016-10-18 14:17:35

數(shù)據(jù)開發(fā)商業(yè)智能

2022-12-01 10:05:19

2010-08-09 16:09:25

2011-03-21 16:38:29

數(shù)據(jù)庫管理員開發(fā)人員

2022-07-14 08:01:59

數(shù)據(jù)庫web映射器

2020-12-21 09:00:00

數(shù)據(jù)庫MySQL技術(shù)

2023-10-24 15:11:42

低代碼開發(fā)工具

2009-11-23 20:07:51

ibmdw開發(fā)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 欧美一区二不卡视频 | 欧产日产国产精品视频 | 日日夜精品视频 | 国产精品毛片一区二区三区 | 国产色片 | h视频免费在线观看 | 亚洲精品久久久久avwww潮水 | 成人影| 亚洲精品日韩在线 | 欧美1区 | 国产在线一区二区 | 粉嫩国产精品一区二区在线观看 | 日韩在线中文字幕 | pacopacomama在线 | 欧美成人激情视频 | 精品国产一级 | 久久精品国产免费一区二区三区 | 欧美精品一区在线发布 | 伊人色综合久久久天天蜜桃 | 日批免费观看 | 精品无码久久久久国产 | 日韩视频91 | 精品国产乱码久久久久久蜜柚 | 国产成人一区二区三区久久久 | 成年女人免费v片 | 亚洲综合精品 | 99re视频在线观看 | 成人福利电影 | 欧美一级精品片在线看 | 亚洲一区二区三区在线播放 | 亚洲国产成人一区二区 | 久久99精品久久久久久国产越南 | www.国产精 | tube国产 | 在线婷婷| 91天堂网| 国产中文字幕亚洲 | 青青草社区 | 一级免费黄色 | 国产精品亚洲成在人线 | 国产在线观 |