為Java應用程式實現分布式資料庫

2020-12-09 離開了編程我會死

簡介

Interference是一個簡單的Java框架,使您可以使用類似JPA的接口和註解在Java應用程式中運行分布式資料庫服務。

Interference服務的基本單元是一個節點-實際上,它是一個Java應用程式,其中運行服務實例。

每個Interference節點都有其自己的持久性存儲,並且可以視為具有以下基本功能的本地資料庫:

使用簡單對象(POJO)操作使用基本的JPA註解(@ Table,@ Column,@ Transient,@ Index,@ GeneratedValue)將對象直接映射到持久性存儲

支持轉換支持具有READ COMMITTED隔離級別的SQL查詢使用簡單快速的序列化使用持久索引來快速訪問數據並提高SQL連接的性能節點可以加入集群,在具有節點間交互的集群級別,我們獲得以下功能:

允許您從集群中包含的任何節點插入數據並運行SQL查詢支持水平擴展SQL查詢支持透明的集群級事務支持複雜的事件處理(CEP)和簡單的流式SQL節點不需要啟動任何其他協調器分布式持久模式

Interference集群是一個分散的系統。這意味著集群不使用任何協調節點。取而代之的是,每個節點都遵循一組行為的正式規則,這些規則可以保證特定交互框架內數據的完整性和可用性。

在這些規則的框架內,Interference集群的所有節點都是等效的。這意味著主節點系統和從節點系統之間沒有分隔-可以從任何節點對用戶表進行更改。同樣,所有更改都將複製到所有節點,無論在哪個節點上進行更改。

談論事務時,在本地用戶會話中運行提交會自動確保更改的數據在所有群集節點上可見。

要將節點包括在群集中,必須指定群集節點的完整列表(當前節點除外)。

群集節點的最小數量為2,最大數量為64。

配置後,我們可以按任何順序將所有已配置的節點啟動為集群。所有節點都將使用特定的消息(事件)來提供節點間數據一致性和水平擴展查詢。

分配規則

所有群集節點都是等效的任何節點上的所有更改都映射到其他節點如果無法進行複製(節點不可用或連接斷開),則會為此節點創建一個持久更改隊列任何數據幀的所有者都是在其上分配了該幀的節點系統使用實體的唯一標識符(@DistributedId)的生成,以便標識符在群集內唯一,而不僅僅是在同一節點內

嚴格在本地結構中執行數據插入,然後只能在具有此記錄的數據幀的節點所有者上執行複製的更改(更新/刪除)SQL水平擴展查詢

在任何群集節點上調用的所有SQL查詢都將自動分布在群集節點之間,以進行並行處理。節點根據對任務量的分析(查詢表的量足夠大等)來做出這樣的決定。

如果在處理請求期間某個節點不可用(網絡故障,服務已停止),則為此節點分配的任務將自動重新安排到另一個可用節點。

複雜事件處理

Interference使用SQL語句中的SELECT STREAM子句支持複雜的事件處理。SELECT STREAM查詢支持三種CEP模式:

事件按原樣處理,沒有任何匯總通過使用任何組函數按列值匯總事件一些窗口匯總每個新記錄的事件流式查詢與通常的查詢之間的基本區別如下:

execute()方法返回一個StreamQueue對象,該請求將異步執行,直到調用StreamQueue.stop()方法或應用程式終止為止

StreamQueue.poll()方法根據WHERE條件(如果存在)返回先前插入表中的所有記錄,並繼續返回新添加的記錄每個StreamQueue.poll()方法始終返回會話中最後一個輪詢位置之後的下一個記錄,因此,如果停止了SQL請求並在同一會話中再次調用該SQL請求,則將從上一個固定位置繼續進行數據檢索,將從表的開頭檢索另一個會話數據

與通常不同,流請求不支持事務,並且始終返回實際插入的行,而不管會話插入數據中使用commit()方法(DIRTY READS)如何

相關焦點

  • 分布式資料庫——未來行業應用主流資料庫
    伴隨著雲計算、大數據技術的發展,傳統信息技術及應用受到了巨大衝擊,資料庫作為基礎軟體也迎來了新的挑戰和機遇。未來,各行各業在信息化應用的資料庫選型將會越來越傾向分布式資料庫。本文將從典型業務應用類型來分析未來行業信息化對分布式資料庫的需求。
  • java中資料庫:JDBC的使用
    JDBC是java中提供的一套資料庫編程API,它定義了一套用來訪問資料庫的標準Java類庫(位於java.sql和javax.sql
  • Java資料庫連接性簡介
    JDBC API支持Java應用程式與JDBC管理器之間的通信。2. JDBC驅動程序支持JDBC管理器和資料庫驅動程序之間的通信。JDBC是您的應用程式代碼與之交互的通用API。下面是您正在使用的資料庫的JDBC兼容驅動程序。圖1是Java持久層中JDBC的體系結構概述。
  • 雲時代的分布式資料庫:阿里分布式資料庫服務DRDS
    伴隨著這種對於系統性能、成本以及擴展性的新需要,以HBase、MongoDB為代表的NoSQL資料庫和以阿里DRDS、VoltDB、ScaleBase為代表的分布式NewSQL資料庫如雨後春筍般不斷湧現出來。本文將會介紹阿里DRDS的技術理念、發展歷程、技術特性等內容。
  • 動力節點Java學院2021年Java學習路線圖最新出爐啦
    重點學習:SQL精講、MySQL、oracle、MySQL索引實現原理及優化、JDBC這一部分學完可以通過SQL語言從資料庫中查詢數據,結合Java項目實現動態站點數據的保存。第三階段:WEB前端Java提供了技術方案可以解決客戶端和伺服器端的實現,特別是伺服器的應用,比如Servlet,JSP和第三方框架等等。Javaweb初級的一般是用JSP(Java Server Pages)+servlet+Javabean來開發,對大型的網站一般是使用框架來開發的,例如struts,hibernate,spring,典型的struts框架結構。
  • java和php在web開發方面對比分析
    而java需要先學好java的語法和熟悉一些核心的類庫,懂得面向對象的程序設計方法。所以java不如php好學。java首先要編譯成字節碼.class文件,然後在java虛擬機上解釋執行。二、 資料庫訪問比較java通過jdbc來訪問資料庫,通過不同的資料庫廠商提供的資料庫驅動方便地訪問資料庫。訪問資料庫的接口比較統一。php對於不同的資料庫採用不同的資料庫訪問接口,所以資料庫訪問代碼的通用性不強。例如:用java開發的web應用從mysql資料庫轉到oracle資料庫只需要做很少的修改。
  • JAVA入門:從什麼是JAVA到編寫第一個java程序只需看這一篇
    Java語言作為靜態面向對象程式語言的代表,極好地實現了面向對象理論,允許程式設計師以優雅的思維方式進行複雜的編程。Java具有簡單性、面向對象、分布式、健壯性、安全性、平臺獨立與可移植性、多線程、動態性等特點 。Java可以編寫桌面應用程式、Web應用程式、分布式系統和嵌入式系統應用程式等。
  • 達夢分布式資料庫演進
    另一個非常重要的原因是,交易中間件的誕生和完善,大概是1985年到1995年,它的出現改變了應用程式訪問資料庫的訪問模式,信息系統從兩層結構變成三層結構,顯著改善了資料庫並發響應速度。  達夢認為,集中式資料庫技術的發展,充分發揮了硬體設備的能力,當時面對的問題,最終由硬體設備的發展+集中式資料庫組合解決,人們失去了繼續發展、使用分布式資料庫技術的理由。
  • 如何應用觀察者設計模式重構系統中日誌處理功能實現的程序代碼
    讀者可以從作者的另一篇文章《軟體項目實訓及課程設計指導——如何應用策略設計模式的思想設計通用的資料庫連接類》一文中所示的黑體部分的代碼中能夠了解到常規的日誌記錄功能實現所存在的問題——直接將日誌記錄功能實現的代碼插入到資料庫連接ConnectDBBean類的功能實現代碼中,直接包含有日誌處理功能實現的程序代碼。
  • 巨杉金融級分布式資料庫SequoiaDB 3.2發布,特性全面強化
    ,應用程式也無需做什麼改動。巨杉資料庫原生支持資料庫內核級別的高可用以及跨數據中心災備能力,目前已經實現異地容災備份,可滿足「三地五中心」的容災支持。同時,巨杉資料庫在異地容災基礎上,實現了數據異地多活,目前已經實現雙中心同時讀寫,中心切換RPO為0和RTO達到秒級,提供了「超金融級」的數據安全保障。
  • 為什麼雲原生+分布式是資料庫的未來?
    李飛飛接著說道,雲原生資料庫基於Shared Everything + Shared Storage 的存儲計算分離架構實現資源池化高效管理,同時兼具彈性高可用水平拓展的特性。而分布式,就是用Shared Nothing的架構,實現數據水平分片、水平擴展。
  • 徹底搞清分布式資料庫
    從資料庫的發展歷程來看,像什麼資料庫冷備熱備、主從、雙活、多活、集群等等,都與「分布式」不相關,與業務不相關,都是在「分布式」之前已經成熟應用的; 所以「分布式」與他們有什麼關係?!沒什麼關係,你即可以「分布式」的同時,又雙活,多活等等,現實也往往是同時應用的,分布式常常會搭配主從提供高可用資料庫服務。2.
  • Java和PHP在Web開發方面的比較
    而java需要先學好java的語法和熟悉一些核心的類庫,懂得面向對象的程序設計方法。所以java不如php好學。Java首先要編譯成字節碼.class文件,然後在java虛擬機上解釋執行。Java的Web開發首先最容易想到的就是JSP(現在已經到JSP2.0),原來的java的Web開發都是用servlet來實現的,用servlet來開發需要程式設計師在java的源文件中嵌入大量的html代碼。所以後來就出現了JSP,JSP可以方便的嵌入到html文件當中,其實jsp文件在伺服器上執行的時候首先會被應用伺服器轉換成servlet,然後再編譯執行。
  • 程序語言常見專業術語集合
    JVMJava虛擬機 Java Vitual Machine,整個Java實現跨平臺的最核心的部分,所有的java程序會首先被編譯為.class的類文件,這種類文件可以在虛擬機上執行。開發人員可以利用這些組件,像搭積木一樣建立分布式應用。4、JDBCJava DataBase Connectivity,java資料庫連接,用於Java應用程式連接資料庫的標準方法。JDBC對Java程式設計師而言是API,對實現與資料庫連接的服務提供商而言是接口模型。
  • Java和PHP在Web開發方面的八大對比
    而java需要先學好java的語法和熟悉一些核心的類庫,懂得面向對象的程序設計方法。所以java不如php好學。  Java首先要編譯成字節碼.class文件,然後在java虛擬機上解釋執行。使用javabean可以方便的實現java代碼和html的分離,能夠增強系統的功能和軟體的復用性。  Java的Web開發屬於SUN公司定義的J2EE其中的規範。而且在J2EE中包括了java的Web開發的所有方面,如:JSP、Servlet、JDBC、JNDI、JAVABEAN、EJB等等。J2EE就特別適合於做大型的企業級的應用。
  • 「技術乾貨」分布式 SQL:資料庫的未來發展方向
    資料庫體系結構發展的下一步是分布式SQL,今天就讓我們來聊一聊它的一些顯著特徵。隨著組織過渡到雲,他們最終發現,在一些最關鍵的應用程式背後的舊式關係資料庫根本無法利用雲的前景,並且難以擴展。是資料庫限制了這種轉換的速度和有效性。
  • 如何優化Web應用數據訪問實現方式以提高軟體應用系統的響應性能
    2、在軟體應用系統中應用資料庫連接池技術(1)JDBC2.0中的DataSource接口javax.sql包中的DataSource接口可以採用三種不同的方式實現——簡單的實現(只提供Connection對象的創建)、資料庫連接池的實現和分布式事務支持的資料庫連接實現
  • 使用Java API在Jedis中實現DAO設計模式
    在本文中,我們將學習Jedis Java客戶端中的DAO設計模式和實現。DAO模式被實現為客戶端應用程式和資料庫之間的一層。客戶端應用程式不必依賴基礎資料庫交互API(低級)。Redis資料庫中存儲的數據被建模為Domain對象(POJO類),它將僅具有getter和setter方法,客戶端應用程式僅知道域對象和高級API。
  • 金融企業選擇與應用分布式資料庫的7個核心問題
    曾在多個知名企業任職產品經理,主導或參與多款業內知名的B端產品從0到1過程,部分主導產品已實現同類產品佔有率第一。接手騰訊分布式資料庫以來,主要負責騰訊雲分布式資料庫功能策劃、市場能力建設、服務支撐能力建設和團隊建設等。 大家好,我是來自騰訊雲的蘇強。
  • 2020徵文-手機【乾貨】鴻蒙應用程式流轉的實現!
    這裡我給大家介紹一下HarmonyOS應用程式流轉的實現。本文中的內容有視頻版哦。在我在51CTO中首發了我的最新免費的視頻教程《精講鴻蒙應用程式開發》就有相關的內容。歡迎大家觀看,並提出寶貴的意見:https://edu.51cto.com/course/26138.html下面進入正題:1 什麼是應用程式的協同和流轉?首先,什麼是應用程式的流轉和協同呢?應用流轉和協同是鴻蒙作業系統分布式的重要體現。