HarperDB 和 Java 入门:构建实时数据应用程序的首选解决方案,第一次“Hello, World”集成

在本文中,了解 HarperDB 如何与 Java 集成作为构建实时数据密集型应用程序的选择。

在当今数据驱动的世界中,寻求高效、灵活的数据库解决方案是开发人员和企业不断追求的目标。HarperDB 就是这样的解决方案之一。HarperDB 是一种现代化的多功能数据库管理系统,具有简单性、速度和可扩展性。在本文中,我们将深入探讨 HarperDB 的世界,探讨它为何受到欢迎,以及是什么使其成为开发人员和组织的一个令人信服的选择。

此外,我们将迈出将 HarperDB 与Java编程语言集成的第一步。Java 是一种广泛采用的、健壮的、独立于平台的编程语言,以其在构建各种应用程序方面的可靠性而闻名。通过弥合 HarperDB 和 Java 之间的差距,我们将释放无缝管理和访问数据的许多可能性。

因此,请与我们一起踏上这段旅程,我们将揭开 HarperDB 的面纱,并开始与普通 Java 的首次集成。了解这种组合如何帮助您构建高效且响应迅速的应用程序、简化数据管理并将您的开发项目提升到新的水平。

HarperDB:现代数据库解决方案

HarperDB 将传统功能的简单性与现代应用程序所需的功能和灵活性融为一体。从本质上讲,HarperDB 是一个全球分布式边缘应用程序平台,由边缘数据库、流代理和用户定义的应用程序组成,具有接近零的延迟、巨大的成本节省和卓越的开发人员体验。这种多功能性使其成为企业和开发人员应对管理不同数据源的复杂性的选择。

HarperDB 可以在从边缘到云的任何地方运行,并具有用户友好的管理界面,使任何技能水平的开发人员都能快速启动和运行。与许多需要大量设置、配置和数据库管理专业知识的传统数据库不同,HarperDB 简化了这些流程。这种简单性缩短了学习曲线并节省了宝贵的开发时间,使团队能够专注于构建应用程序而不是管理数据库。

性能对于任何数据库系统都至关重要,尤其是在当今的实时和数据密集型应用程序中。HarperDB 的架构专为速度和规模而设计,确保数据检索和处理以闪电般的速度进行。HarperDB 提供水平可扩展性,允许您随着数据的增长无缝添加资源。 

HarperDB 不仅仅将数据分类到预定义的结构中。这种灵活性在当今的数据环境中非常宝贵,因为信息的格式多种多样。借助 HarperDB,您可以按照符合应用程序独特需求的方式存储、查询和分析数据,而不受严格模式的限制。

HarperDB 通过多种方式实现成本节约。易于使用和低维护要求意味着运营费用的降低。此外,HarperDB 可以使用更少的硬件提供与现有解决方案相同的吞吐量(或者使您能够使用相同数量的硬件并获得更高的吞吐量)。

随着我们深入研究 HarperDB 与 Java 的集成,我们将释放该数据库系统的潜力,并探索它如何将您的数据项目提升到新的高度。

本地安装 HarperDB

在我们探索 HarperDB 及其与 Java 的集成时,第一步是在本地安装 HarperDB。虽然有云版本可用,但本文重点介绍本地安装,以便为您提供实践体验。

您可以从此处的官方文档中选择您喜欢的风格和安装方法。不过,为了简单起见,我们将演示如何使用流行的容器化平台 Docker 设置 HarperDB。

Docker安装

Docker简化了在容器化环境中安装和运行 HarperDB 的过程。请注意,以下 Docker 命令仅用于演示目的,不应在生产中使用。在生产中,您应该遵循保护数据库凭据的最佳实践。

以下是如何使用简单的用户名和密码在 Docker 容器中运行 HarperDB:

docker run -d \
  -e HDB_ADMIN_USERNAME=root \
  -e HDB_ADMIN_PASSWORD=password \
  -e HTTP_THREADS=4 \
  -p 9925:9925 \
  -p 9926:9926 \
  harperdb/harperdb

让我们分解一下这个命令的作用:

  • -d:以分离模式运行容器(在后台)

  • -e HDB_ADMIN_USERNAME=root:将管理员用户名设置为root(您可以更改此设置)

  • -e HDB_ADMIN_PASSWORD=password:将管理员密码设置为password(请记住在生产中使用可靠且安全的密码)

  • -e HTTP_THREADS=4:配置处理请求的HTTP线程数

  • -p 9925:9925and -p 9926:9926:将容器的内部端口映射9925到9926主机上的相应端口

此本地安装将作为探索 HarperDB 的功能及其与 Java 集成的基础。在后续部分中,我们将更深入地了解 HarperDB 的使用并将其与 Java 连接,以利用其功能来构建健壮的数据驱动应用程序。

在 HarperDB 中创建架构、表和字段

“dev”现在我们已经在本地运行 HarperDB,让我们创建一个架构和表并定义架构和表的字段“person”。我们将使用 HTTP 请求执行这些操作。“root”请注意,这些请求中的授权标头使用带有用户名和密码的主要身份验证方法“password”。在生产环境中,始终确保安全的身份验证方法。

要开始在本地使用 HarperDB,我们必须创建一个模式、定义一个表并指定其字段。这些操作可以通过HTTP请求来执行。在我们的示例中,我们将创建一个dev架构和一个包含、和列的"person"表。我们将使用命令来实现此目的。"id""name""age"curl

在运行这些命令之前,请确保您的 HarperDB Docker 容器已启动并正在运行,如前所述。

创建架构('dev'):

curl --location --request POST 'http://localhost:9925/' \
--header 'Authorization: Basic cm9vdDpwYXNzd29yZA==' \
--header 'Content-Type: application/json' \
--data-raw '{
    "operation": "create_schema",
    "schema": "dev"
}'

此命令发送一个 HTTPPOST请求来创建dev架构。授权标头包含基本身份验证凭据(Base64 编码的用户名和密码)。替换cm9vdDpwYXNzd29yZA==为您的 Base64 编码凭据。

创建一个以“id”作为哈希属性的“person”表:

curl --location 'http://localhost:9925' \
--header 'Authorization: Basic cm9vdDpwYXNzd29yZA==' \
--header 'Content-Type: application/json' \
--data '{
    "operation": "create_table",
    "schema": "dev",
    "table": "person",
    "hash_attribute": "id"
}'


文章来源地址https://www.toymoban.com/diary/java/386.html

此命令在架构中创建一个"person"表"dev"并将该"id"列指定为哈希属性。用于"hash_attribute"分布式数据存储和检索。

在“person”表中创建“name”和“age”列:

curl --location 'http://localhost:9925' \
--header 'Authorization: Basic cm9vdDpwYXNzd29yZA==' \
--header 'Content-Type: application/json' \
--data '{
    "operation": "create_attribute",
    "schema": "dev",
    "table": "person",
    "attribute": "name"
}'

curl --location 'http://localhost:9925' \
--header 'Authorization: Basic cm9vdDpwYXNzd29yZA==' \
--header 'Content-Type: application/json' \
--data '{
    "operation": "create_attribute",
    "schema": "dev",
    "table": "person",
    "attribute": "age"
}'

这两个命令在表中创建"name"和"age"列"person"。这些列定义了数据的结构。

通过这些 HTTP 请求,您已在本地 HarperDB 实例中设置架构、表和列。您现在已准备好开始处理数据并探索如何将 HarperDB 与 Java 集成以实现强大的数据驱动应用程序。

探索 HarperDB 集成的 Java 代码

本次会议将探讨将 HarperDB 集成到普通 Java SE(标准版)应用程序中的 Java 代码。 我们将创建一个简单的“Person”实体,其中包含“id”、“name”和“age”字段。 我们必须建立一个 Maven 项目并包含 HarperDB JDBC 驱动程序才能启动。

第1步:创建Maven项目

  • 首先使用 Maven 快速入门原型创建一个新的Maven项目。您可以使用以下命令来创建项目:

mvn archetype:generate -DgroupId=com.example -DartifactId=harperdb-demo -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
  • 该命令将生成一个基本的 Maven 项目结构。

  • 导航到项目根目录。

步骤 2:包含 HarperDB JDBC 驱动程序

  • 从官方 HarperDB 资源页面下载 HarperDB JDBC 驱动程序:HarperDB Drivers。

  • 解压下载的 ZIP 文件的内容。

  • 在项目根目录中创建一个名为lib的新文件夹。

  • 从提取的内容中复制 HarperDB JDBC 驱动程序 JAR 文件并将其粘贴到lib文件夹中。

步骤 3:更新 Maven POM 文件

  • 打开项目中的 pom.xml 文件。

  • 添加以下 Maven 依赖项以包含 HarperDB JDBC 驱动程序。 确保调整 <version> 和 <systemPath> 以匹配您的 JAR 文件:

<dependency>
    <groupId>cdata.jdbc.harperdb</groupId>
    <artifactId>cdata.jdbc.harperdb</artifactId>
    <scope>system</scope>
    <version>1.0</version>
    <systemPath>${project.basedir}/lib/cdata.jdbc.harperdb.jar</systemPath>
</dependency>

此依赖项指示 Maven 将 HarperDB JDBC 驱动程序 JAR 文件包含为项目的系统依赖项。

为 HarperDB 集成创建人员记录和 PersonDAO 类

我们将创建一个Person记录,这是 Java 中引入的用于数据建模的不可变类。我们还将实现一个PersonDAO类,以使用直接 JDBC API 调用与 HarperDB 进行交互。

1. 创建人员记录

首先,我们定义具有三个属性的 Person 记录:id、name 和age。 我们还提供了用于创建 Person 实例的静态工厂方法。 该记录通过自动生成构造函数、访问器方法以及 equals() 和 hashCode() 实现来简化数据建模并减少代码。

public record Person(String id, String name, Integer age) {
   
    public static Person of(String name, Integer age) {
        return new Person(null, name, age);
    }
}

2.创建PersonDAO类

接下来,我们创建 PersonDAO 类,负责使用 HarperDB JDBC 驱动程序进行数据库操作。 此类提供了从数据库中插入、按 ID 查找、删除和检索所有 Person 记录的方法。

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import java.util.Properties;

public class PersonDAO {


    private static final String INSERT = "INSERT INTO dev.person (name, age) VALUES (?, ?)";
    private static final String SELECT = "select * From dev.person";

    private static final String FIND_ID = "select * From dev.person where id = ?";

    private static final String DELETE = "delete From dev.person where id = ?";

    public void insert(Person person) throws SQLException {
        try(Connection connection = createConnection()){
            var statement = connection.prepareStatement(INSERT);
            statement.setString(1, person.name());
            statement.setInt(2, person.age());
            statement.execute();
        }
    }

    public Optional<Person> findById(String id) throws SQLException {
        try(Connection connection = createConnection()) {
            var statement = connection.prepareStatement(FIND_ID);
            statement.setString(1, id);
            var resultSet = statement.executeQuery();
            if(resultSet.next()) {
                var name = resultSet.getString("name");
                var age = resultSet.getInt("age");
                return Optional.of(new Person(id, name, age));
            }
            return Optional.empty();
        }
    }

    public void delete(String id) throws SQLException {
        try(Connection connection = createConnection()) {
            var statement = connection.prepareStatement(DELETE);
            statement.setString(1, id);
            statement.execute();
        }
    }

    public List<Person> findAll() throws SQLException {
        List<Person> people = new ArrayList<>();
        try(Connection connection = createConnection()) {
            var statement = connection.prepareStatement(SELECT);
            var resultSet = statement.executeQuery();
            while (resultSet.next()) {
                var id = resultSet.getString("id");
                var name = resultSet.getString("name");
                var age = resultSet.getInt("age");
                people.add(new Person(id, name, age));
            }
        }
        return people;
    }

    static Connection createConnection() throws SQLException {
        var properties = new Properties();
        properties.setProperty("Server","http://localhost:9925/");
        properties.setProperty("User","root");
        properties.setProperty("Password","password");
        return DriverManager.getConnection("jdbc:harperdb:", properties);
    }
}

就位 Person 记录和 PersonDAO 类后,您现在可以使用 Java 与 HarperDB 进行交互,执行插入、按 ID 查找、删除和从数据库检索 Person 记录等操作。 调整 createConnection 方法中的数据库连接属性以匹配您的 HarperDB 设置。

使用 HarperDB 集成执行 Java 应用程序

使用 Person 记录和 PersonDAO 类后,您可以执行 Java 应用程序以与 HarperDB 交互。 这是用于实现应用程序的 App 类:

import java.sql.SQLException;
import java.util.List;

public class App {

    public static void main(String[] args) throws SQLException {
        PersonDAO dao = new PersonDAO();
        dao.insert(Person.of( "Ada", 10));
        dao.insert(Person.of("Poliana", 20));
        dao.insert(Person.of("Jhon", 30));
        List<Person> people = dao.findAll();
        people.forEach(System.out::println);
        System.out.println("Find by id: ");
        var id = people.get(0).id();
        dao.findById(id).ifPresent(System.out::println);
        dao.delete(id);
        System.out.println("After delete: is present? " + dao.findById(id).isPresent());
    }

    private App() {
    }

}

在这个应用程序类中:

  1. 我们创建 PersonDAO 类的实例来与数据库交互。

  2. 我们使用 dao.insert(...) 方法插入示例人员记录。

  3. 我们使用 dao.findAll() 检索所有 Person 记录并打印它们。

  4. 我们通过 ID 查找 Person 并使用 dao.findById(...) 打印它。

  5. 我们使用 dao.delete(...) 按 ID 删除一个 Person,然后检查它是否仍在数据库中。

执行此 App 类将针对您的 HarperDB 数据库执行这些操作,演示您的 Java 应用程序如何使用 Person 记录和 PersonDAO 类进行数据库操作与 HarperDB 交互。 确保 HarperDB 正在运行,并且 HarperDB JDBC 驱动程序在您的项目中进行了充分配置,如本文前面所述。

结论

在探索 HarperDB 及其与 Java 集成的过程中,我们发现了一种多功能的现代数据库解决方案,它结合了简单性、速度和灵活性,可以满足广泛的数据管理需求。 在我们的结论中,我们回顾了我们所学到的知识,并强调了可用于进一步探索的资源。

下一步

  • 文档:要更深入地了解 HarperDB 的特性和功能,请参阅 HarperDB 文档中的官方文档(本文前面有链接)。

  • 示例代码:在 HarperDB 示例 GitHub 存储库中探索将 HarperDB 与 Java 集成的实际示例和示例代码。(https://github.com/o-s-expert/harperdb-samples)

将 HarperDB 合并到您的 Java 应用程序中,使您能够高效管理数据、实时做出明智的决策并构建强大的数据驱动解决方案。 无论您是开发物联网应用程序、网络和移动应用程序,还是全球游戏解决方案,HarperDB 都是一个现代且易于访问的选择。


到此这篇关于HarperDB 和 Java 入门:构建实时数据应用程序的首选解决方案,第一次“Hello, World”集成的文章就介绍到这了,更多相关内容可以在右上角搜索或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

原文地址:https://www.toymoban.com/diary/java/386.html

如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请联系站长进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用
SQL 中的 ACID 和事务
上一篇 2023年10月13日 01:52
下一篇 2023年10月13日 02:16

相关文章

  • 使用 Node.js 和 Socket.io 构建实时聊天应用程序

    主要是通过简易聊天室熟练掌握 Socket.io 相关方法和运行的过程。 Socket.io 在进行实现简易实时聊天室之前,我们先梳理一下我们需要的功能和流程。 所需功能: 1、告知用户已经连接到聊天室 2、自己发送时,页面展示对应的消息展示,而对方看的到信息是谁发送了什么 3、

    2024年02月13日
    浏览(53)
  • Spring Boot实践:构建WebSocket实时通信应用程序并创建订阅端点

    作为一款流行的Java开发框架,Spring Boot可以轻松地集成WebSocket。WebSocket能够为Web应用程序提供实时通信功能,而Spring Boot的优秀特性使得它可以很容易地实现WebSocket的集成。在本篇文章中,我们将演示如何使用Spring Boot框架来构建一个简单的WebSocket应用程序。 1. 创建Spring Boo

    2024年02月01日
    浏览(63)
  • 使用 YOLOv8 和 Streamlit 构建实时对象检测和跟踪应用程序:第 1 部分-介绍和设置

    示例:图像上的对象检测 实时视频中的目标检测和跟踪是计算机视觉的一个重要领域,在监控、汽车和机器人等各个领域都有广泛的应用。 由于需要能够识别和跟踪对象、确定其位置并对它们进行实时分类的自动化系统,对视频帧中的实时对象检测和跟踪的需求日益增加。

    2024年02月17日
    浏览(40)
  • 快速入门:使用 Spring Boot 构建 Web 应用程序

    本文将讨论以下主题: 安装 Java JDK、Gradle 或 Maven 和 Eclipse 或 IntelliJ IDEA 创建一个新的 Spring Boot 项目 运行 Spring Boot 应用程序 编写一个简单的 Web 应用程序 打包应用程序以用于生产环境 通过这些主题,您将能够开始使用 Spring Boot 并创建自己的 Web 应用程序。 Spring Boot是一个

    2024年02月07日
    浏览(76)
  • LangChain入门:构建LLM驱动的应用程序的初学者指南

    LangChain DemoGPT         你有没有想过如何使用大型语言模型(LLM)构建强大的应用程序?或者,也许您正在寻找一种简化的方式来开发这些应用程序?那么你来对地方了!本指南将向您介绍LangChain,这是一个简化构建LLM驱动的应用程序的过程的工具。我们还将深入研究 

    2024年02月12日
    浏览(41)
  • Spring Boot:轻松构建Java应用程序

    Spring Boot 是一个用于简化Spring应用程序开发的框架。通过自动配置和提供各种生产级功能,Spring Boot帮助开发者更快速、更简单地构建基于Spring的应用程序。在这篇博客中,我们将探讨Spring Boot的特点以及如何开始使用它。 Spring Boot 的主要优势在于它简化了Spring应用程序的开

    2024年02月01日
    浏览(43)
  • 【PyQt5】构建强大的Python图形用户界面应用程序 -- 入门指南

      作者主页: 爱笑的男孩。的博客_CSDN博客-深度学习,活动,python领域博主 爱笑的男孩。擅长深度学习,活动,python,等方面的知识,爱笑的男孩。关注算法,python,计算机视觉,图像处理,深度学习,pytorch,神经网络,opencv领域. https://blog.csdn.net/Code_and516?type=blog 个人简介:打工人。 持续分

    2024年02月15日
    浏览(47)
  • 构建一个 Java 应用程序来与 ChatGPT 对话

    文末附 完整代码 的免费下载链接 您需要做的第一件事是获取 API 密钥。您可以使用OpenAI 提供的免费版 ChatGPT来访问它。注册后,您将可以免费访问 3.5 版本。(版本 4 目前仍需要订阅费。)  拥有帐户并登录后,您可以生成新的 API 密钥。将其保存在安全的地方;我们稍后会

    2024年02月12日
    浏览(47)
  • Qt数据可视化示例01-显示实时音频数据的简单应用程序

    audiolevels 示例显示实时音频数据的简单应用程序。示例从麦克风读取音频电平, 并在条形图中显示这些电平。为了增加用于演示目的的负载,并使图形更漂亮, 使用稍作修改的数据来填充多行。 作为Qt 数据可视化的第一个示例,我们忽略数据源的获取,主要关注数据的呈现

    2024年01月18日
    浏览(61)
  • “深入理解Spring Boot:构建高效、可扩展的Java应用程序“

    标题:深入理解Spring Boot:构建高效、可扩展的Java应用程序 摘要:Spring Boot是一个用于构建Java应用程序的开源框架,它提供了一种简单且高效的方式来创建独立的、生产级别的应用程序。本文将深入探讨Spring Boot的核心概念和特性,并通过示例代码展示如何使用Spring Boot构建

    2024年02月15日
    浏览(61)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包