H2 is written in Java, in-memory HSQL databases, can be embedded in Java applications or run in the client-server mode.
H2 supports a simple clustering / high availability mechanism. The architecture is: two database servers run on two different computers, and on both computers is a copy of the same database. If both servers run, each database operation is executed on both computers. If one server fails (power, hardware or network failure), the other server can still continue to work. From this point on, the operations will be executed only on one server until the other server is back up.
Clustering can only be used in the server mode (the embedded mode does not support clustering, but maybe oneday in the future, the 'mixed clustering mode' will add this to the feature request list; it should be quite easy to implement.). It is possible to restore the cluster without stopping the server, however it is critical that no other application is changing the data in the first database while the second database is restored, so restoring the cluster is currently a manual process.
Suppose two server:
server1: java -cp "h2.jar;%H2DRIVERS%;%CLASSPATH%" org.h2.tools.Server -tcp -tcpPort 9101 -baseDir server1
server2: java -cp "h2.jar;%H2DRIVERS%;%CLASSPATH%" org.h2.tools.Server -tcp -tcpPort 9102 -baseDir server2
Createcluster1:
java -cp "h2.jar;%H2DRIVERS%;%CLASSPATH%" org.h2.tools.CreateCluster -urlSource jdbc:h2:tcp://localhost:9101/./test -urlTarget jdbc:h2:tcp://localhost:9102/./test -user sa -serverlist localhost:9101,localhost:9102
Createcluster2:
java -cp "h2.jar;%H2DRIVERS%;%CLASSPATH%" org.h2.tools.CreateCluster -urlSource jdbc:h2:tcp://localhost:9102/./test -urlTarget jdbc:h2:tcp://localhost:9101/./test -user sa -serverlist localhost:9101,localhost:9102
In this mode, Read-only queries(such as select) are only executed against the first cluster node - server1(9101), but all other statements are executed against all nodes. There is currently no load balancing made to avoid problems with transactions. The following functions may yield different results on different cluster nodes and must be executed with care: RANDOM_UUID(), SECURE_RAND(), SESSION_ID(), MEMORY_FREE(), MEMORY_USED(), CSVREAD(), CSVWRITE(), RAND() [when not using a seed]. Those functions should not be used directly in modifying statements (for example INSERT, UPDATE, or MERGE). However, they can be used in read-only statements and the result can then be used for modifying statements.
Data restore:
If server2 crash, insert/update/delete statements are only submitted to server1 without exception. we should delete server2's db file first, and then restart server2 mannually, and then redo Createcluster1 command, H2 will do data synchronization automatically (from server1 to server2), and after that, insert/update/delete statements will be executed against server1 and server2.
If server1 crash, we should delete server1's db file first, and then restart server1, then do another Createcluster2 command instead of Createcluster1 , otherwise the exception(target db's file should be empty) will be thrown, that's to say, H2's culstering data synchronization is baed on -urlSource and -urlTarget, and the target db file must be empty. But in this way, the select queries will be executed against server2, not server1.
分享到:
相关推荐
私有内存数据库意味着H2可以将所有数据存储在内存中,这样可以实现极快的数据读取速度,但同时也意味着断电或重启后数据不会持久化,除非使用了特定的持久化机制。 【标签】进一步细化了主题,"sqlgetconnectattr...
聚类算法是数据挖掘中的核心方法之一,主要用于寻找数据集中的自然群体或模式,使得群体内的对象相似度高,而群体间的相似度低。在空间数据库中,这些算法有助于揭示地理空间数据的内在结构和规律。 《基于空间...
随着大数据时代的到来,海量数据的涌现——包括图像、文本、DNA序列、时间序列、Web数据等——使得应用于大型数据库的聚类分析成为数据挖掘领域的热点研究课题。面对如此庞大的数据集,如何高效、有效地进行聚类分析...
"人脸数据库用于聚类分析"这一主题,意味着我们关注的是如何利用人脸图像数据进行无监督学习,以便将相似的人脸图像自动分组,即进行聚类。这种方法在人脸识别、安全监控、社交媒体分析等多个场景都有应用。 ORL...
"数据集.rar_uci_uci聚类数据_聚类_聚类 数据集_聚类数据集"这个标题指的是一个来源于UCI(University of California, Irvine)机器学习仓库的压缩文件,其中包含了用于聚类分析的数据集。UCI机器学习仓库是全球广泛...
- **数据持久性**: 由于数据主要存储在易失性内存中,可能需要额外的备份和恢复策略。 - **安全性**: 对于敏感数据,需要采取额外的安全措施以保护数据不被未经授权访问。 ### 六、应用场景 内存数据库结合机器...
其次,文章结合自定义数据处理逻辑结构设计方法,对Java内存数据库检索过程中的特征提取和模糊聚类处理进行了深入探讨。特征提取是数据检索前的重要步骤,它能够从数据集中提取出有助于检索的特征,这些特征可以是...
"聚类算法常用数据集(二维人工数据集+UCI真实数据集)"这个压缩包包含了一系列用于聚类分析的数据集,这对于研究和实践各种聚类算法来说非常有价值。 首先,我们来看"二维人工数据集"。这类数据集通常是由研究人员...
数据库挖掘中的聚类分析是一种无监督学习方法,用于在没有预先设定类别的情况下,根据数据的内在相似性将数据集划分为不同的组或簇。聚类分析的目标是找到数据的自然结构,使得同一簇内的数据对象彼此相似,而不同簇...
这些数据集在聚类分析、数据挖掘、机器学习和模式识别领域具有重要价值。通过对它们进行聚类,我们可以探索数据的内在结构,发现未知的类别关系,也可以评估和比较不同聚类算法的性能。常见的聚类算法有K-means、...
在IT领域,模式识别是一种重要的数据处理技术,用于从大量数据中发现规律、结构或模式。在本案例中,我们关注的是使用VC++编程语言实现的聚类算法,这是一种模式识别的重要工具。聚类是数据分析的一种无监督学习方法...
常见的聚类算法包括K-means、层次聚类(Hierarchical Clustering)、DBSCAN(Density-Based Spatial Clustering of Applications with Noise)以及谱聚类(Spectral Clustering)等。这些算法在市场分割、社交网络...
- **聚类模式(Canopy Clustering Technique)**:聚类是数据分析中一种常见的无监督学习方法,它根据对象之间的相似性将对象分组成多个类别或“簇”,聚类模式指的是使用特定算法或技术将数据集中的对象进行分组的...
在本文中,我们将深入探讨如何使用C#编程语言实现K均值聚类算法,并结合MySQL数据库进行数据存储和检索。K均值聚类是一种广泛应用的数据挖掘技术,常用于无监督学习,将数据集划分成若干个类别或簇,使得同一簇内的...
数据开发过程中,聚类分析可以帮助我们发现数据的内在结构和模式,例如客户分群、市场细分等。在这个项目中,通过K-Means算法对Iris数据集进行聚类,可以观察到不同鸢尾花品种之间的自然分界,进一步理解数据的特性...
总结来说,"轨迹聚类-trajectory-clustering"是一项旨在从地理位置轨迹数据中提取模式的技术,通过改进的DB-Scan等聚类算法实现。这一技术结合Linux环境下的编程实践,如Makefile,以及可能的数据集MoveBank,为理解...
聚类数据集 %% 利用不同方法对债券样本进行聚类 %说明 %分别采用不同的方法,对数据进行聚类 %可以选择的pdist/clustering距离 % methods = {'euclidean'; 'seuclidean'; 'cityblock'; 'chebychev'; ... % '...
聚类是一种无监督学习方法,主要用于发现数据中的自然分组或模式,无需预先设定类别。 描述中提到了"二维数据集,如月牙形,双螺旋型等",这些是典型的人工数据集,通常用于教学和测试聚类算法的效果。人工数据集的...
《多视图聚类在mfeat数据集中的应用与研究》 多视图聚类是一种在数据挖掘领域中广泛使用的先进技术,它旨在处理来自不同源或具有多种表示的数据。mfeat数据集是这类问题的理想实验平台,因为它包含了多个特征视角,...
在近年来,谱聚类算法因其高效、简单且经常优于传统聚类算法(如k-means)而成为数据挖掘和机器学习领域的一颗新星。本文旨在深入探讨由Ulrike von Luxburg撰写的《谱聚类教程》中的核心概念与技术,为读者提供一个...