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

20,170次阅读
没有评论

共计 9107 个字符,预计需要花费 23 分钟才能阅读完成。

在本文中,了解 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 项目

mvn archetype:generate -DgroupId=com.example -DartifactId=harperdb-demo -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

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

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

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

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

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

步骤 3:更新 Maven POM 文件

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

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


    cdata.jdbc.harperdb
    cdata.jdbc.harperdb
    system
    1.0
    ${project.basedir}/lib/cdata.jdbc.harperdb.jar

此依赖项指示 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 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 findAll() throws SQLException {List 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 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 模板网!

    正文完
     0
    Yojack
    版权声明:本篇文章由 Yojack 于1970-01-01发表,共计9107字。
    转载说明:
    1 本网站名称:优杰开发笔记
    2 本站永久网址:https://yojack.cn
    3 本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长进行删除处理。
    4 本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
    5 本站所有内容均可转载及分享, 但请注明出处
    6 我们始终尊重原创作者的版权,所有文章在发布时,均尽可能注明出处与作者。
    7 站长邮箱:laylwenl@gmail.com
    评论(没有评论)