利用 Quarkus 和 HarperDB 的强大功能进行高效的数据管理

在本教程中,了解如何构建与 HarperDB(一个强大的高性能数据库)集成的基于 Quarkus 的微服务 API。

在不断发展的数据库技术领域,保持领先地位不仅是一种选择,而且是一种必然。随着现代应用程序的复杂性和全球影响力不断增长,底层数据库的作用变得越来越重要。它是支持应用程序无缝运行以及大量数据存储和检索的支柱。在这个全球规模应用的时代,拥有一个高性能、灵活、高效的数据库至关重要。

随着现代应用程序的需求激增,对能够跟上步伐的数据库的需求从未如此强烈。“超级数据库”已成为确保应用程序在全球无缝、高效运行的关键角色。这些数据库需要提供速度、多功能性和适应性的独特组合,以满足从电子商务平台到物联网系统的各种应用程序的不同需求。

它们需要的不仅仅是数据存储库。它们必须充当智能中心,能够快速处理、存储和提供数据,同时促进实时分析、安全性和可扩展性。理想的超级数据库不仅仅是一个存储设施;而是一个存储设施。它是一个驱动动态、数据驱动的应用程序的引擎,这些应用程序定义了现代数字景观。

最新版本的HarperDB 4.2引入了企业应用程序的统一开发架构,提供了构建全球规模应用程序的方法。

HarperDB 4.2

HarperDB 4.2 是一个全面的解决方案,它将超高速数据库、用户可编程应用程序和数据流无缝地结合到一个紧密结合的技术中。其结果是一个简化复杂、加速缓慢并降低成本的开发环境。HarperDB 4.2 提供了一个统一的平台,使开发人员能够创建可以跨越全球的应用程序,轻松快速地处理数据。

在本教程中,我们将探索 HarperDB 4.2 的功能,并向您展示如何结合 Java Quarkus来利用其强大功能。我们将引导您完成利用 HarperDB 的新功能与 Quarkus 构建健壮且高性能的应用程序的步骤,展示这种统一开发架构的巨大潜力。因此,加入我们这个启发性的旅程,彻底改变您的应用程序开发流程。

使用 HarperDB 创建 Quarkus 微服务 API,第 1 部分:设置环境

本部分将指导您配置开发环境并创建必要的项目设置以开始使用。

步骤一:配置环境

在深入开发之前,您需要设置环境。我们将首先在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

此命令下载并运行具有指定配置的 HarperDB Docker 容器。它公开了通信所需的端口。

第 2 步:创建架构和表

HarperDB 启动并运行后,下一步是创建模式并定义表来存储动物数据。我们将使用“curl”命令与 HarperDB 的RESTful API进行交互。

  1. “dev”通过执行以下命令创建一个命名的架构:

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

    此命令发送 POST 请求来创建“dev”架构。

  2. 接下来,使用以下命令创建一个名为“animal”with作为哈希属性的表:“scientificName”

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

    该命令在“dev”模式中建立“animal”表。

  3. 现在,通过创建“name”、“genus”和“species”属性来添加“animal”表所需的属性:

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

    这些命令将“name”、“genus”和“species”属性添加到架构“animal”内的表中“dev”。

配置 HarperDB 并设置架构和表后,您可以开始构建基于 Quarkus 的微服务 API 来管理动物数据。请继续关注本教程的下一部分,我们将深入探讨开发过程。

构建 Quarkus 应用程序

我们配置了HarperDB并准备了环境。现在,我们将开始构建 Quarkus 应用程序来管理动物数据。Quarkus 通过方便的项目生成器使这一切变得简单,所以让我们开始吧。

Quarkus 提供了一个直观的基于 Web 的项目生成器,可以简化初始设置。访问Quarkus Project Generator,并按照以下步骤操作:

  1. 选择您的项目所需的扩展。为本教程添加“JAX-RS”和“JSON”以处理 REST 端点和 JSON 序列化。

  2. 单击“生成您的应用程序”按钮。

  3. 下载生成的 ZIP 文件并将其解压到您所需的项目目录。

生成 Quarkus 项目后,您就可以继续前进了。

我们的项目将使用DataFaker 库和 HarperDB Java 驱动程序来生成动物数据以与 HarperDB 数据库交互。要包含HarperDB Java 驱动程序,请阅读上一篇文章

在您的 Quarkus 项目中,创建一条 Java 记录来表示Animal实体。该记录将包含学名、名称、属和物种字段,使您能够有效地处理动物数据。

public record Animal(String scientificName, String name, String genus, String species) {
    public static Animal of(Faker faker) {
        var animal = faker.animal();
        return new Animal(
            animal.scientificName(),
            animal.name(),
            animal.genus(),
            animal.species()
        );
    }
}

该记录包括一个工厂方法 ,of它Animal使用 DataFaker 库生成带有随机数据的实例。我们将使用此方法用动物记录填充我们的数据库。

在您的 Quarkus 项目中,我们将设置 CDI(上下文和依赖注入)来处理数据库连接和数据访问。以下是如何创建管理数据库连接的类的示例ConnectionSupplier:

@ApplicationScoped
public class ConnectionSupplier {

    private static final Logger LOGGER = Logger.getLogger(ConnectionSupplier.class.getName());

    @Produces
    @RequestScoped
    public Connection get() throws SQLException {
        LOGGER.info("Creating connection");
        // Create and return the database connection, e.g., using DriverManager.getConnection
    }

    public void dispose(@Disposes Connection connection) throws SQLException {
        LOGGER.info("Closing connection");
        connection.close();
    }
}

该类ConnectionSupplier使用 CDI 注释来生成和处理数据库连接。这允许 Quarkus 为您管理数据库连接生命周期。

让我们创建一个AnimalDAO类来使用 JDBC 与数据库交互。此类将具有插入和查询动物数据的方法。

@ApplicationScoped
public class AnimalDAO {

    private final Connection connection;

    public AnimalDAO(Connection connection) {
        this.connection = connection;
    }

    public void insert(Animal animal) {
        try {
            // Prepare and execute the SQL INSERT statement to insert the animal data
        } catch (SQLException exception) {
            throw new RuntimeException(exception);
        }
    }

    public Optional<Animal> findById(String id) {
        try {
            // Prepare and execute the SQL SELECT statement to find an animal by ID
        } catch (SQLException exception) {
            throw new RuntimeException(exception);
        }
    }

    // Other methods for data retrieval and manipulation
}

在AnimalDAO课程中,您将使用JDBC执行数据库操作。您可以添加更多方法来处理各种数据库任务,例如更新和删除动物记录。

该AnimalService课程将生成动物数据并利用其AnimalDAO进行数据库交互。

@ApplicationScoped
public class AnimalService {

    private final Faker faker;
    private final AnimalDAO dao;

    @Inject
    public AnimalService(Faker faker, AnimalDAO dao) {
        this.faker = faker;
        this.dao = dao;
    }

    // Implement methods for generating and managing animal data
}

在 中AnimalService,您将使用 DataFaker 库生成随机动物数据,并使用 AnimalDAO 进行数据库操作。

这些组件就位后,您就为使用 HarperDB 的基于 Quarkus 的微服务 API 奠定了基础。在本教程的下一部分中,我们将深入开发 RESTful 端点和数据管理。

创建 AnimalResource 类

在本教程的最后部分,我们将创建一个AnimalResource类来通过 HTTP 端点公开我们的动物服务。此外,我们将提供示例curl命令来演示如何在本地使用这些端点。

创建一个AnimalResource具有 RESTful 端点的类来管理动物数据。此类将与 进行交互AnimalService以处理 HTTP 请求和响应。

@Path("/animals")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public class AnimalResource {
    private final AnimalService service;

    public AnimalResource(AnimalService service) {
        this.service = service;
    }

    @GET
    public List<Animal> findAll() {
        return this.service.findAll();
    }

    @POST
    public Animal insert(Animal animal) {
        this.service.insert(animal);
        return animal;
    }

    @DELETE
    @Path("{id}")
    public void delete(@PathParam("id") String id) {
        this.service.delete(id);
    }

    @POST
    @Path("/generate")
    public void generateRandom() {
        this.service.generateRandom();
    }
}

在此类中,我们定义了几个 RESTful 端点,包括:

  • GET /animals:返回所有动物的列表。

  • POST /animals:插入新动物。

  • DELETE /animals/{id}:通过动物 ID 删除动物。

  • POST /animals/generate:生成随机动物数据。

以下是curl使用 http://localhost:8080/animals/ 作为基本 URL 在本地测试 HTTP 端点的命令:

取回所有动物 (GET)

curl -X GET http://localhost:8080/animals/

插入新动物(POST)

   curl -X POST -H "Content-Type: application/json" -d '{
       "scientificName": "Panthera leo",
       "name": "Lion",
       "genus": "Panthera",
       "species": "Leo"
   }' http://localhost:8080/animals/

按 ID 删除动物 (DELETE )

替换{id}为您要删除的动物的 ID:

 curl -X DELETE http://localhost:8080/animals/{id}

生成随机动物数据 (POST)

此端点不需要任何请求数据:

curl -X POST http://localhost:8080/animals/generate

这些curl命令允许您与基于 Quarkus 的微服务 API 交互,执行检索、插入和删除动物数据等操作。生成的随机数据端点对于使用测试数据填充数据库非常有价值。

借助这些 RESTful 端点,您可以拥有与 HarperDB 集成的功能齐全的 Quarkus 应用程序,以通过 HTTP 管理动物数据。您可以进一步扩展和增强此应用程序以满足您的特定要求。恭喜您完成本教程!

结论

在本教程中,我们踏上了构建与 HarperDB(一个强大的高性能数据库)集成的基于 Quarkus 的微服务 API 的旅程。我们首先设置环境并创建一个具有必要扩展的 Quarkus 项目。利用 DataFaker 库,我们生成随机动物数据来填充我们的 HarperDB 数据库。

我们应用程序的核心是与 HarperDB 的无缝集成,展示了 HarperDB Java 驱动程序的功能。我们使用 CDI 来有效地管理数据库连接,并使用该类创建了结构化数据访问层AnimalDAO。通过它,我们执行了数据库操作,例如插入和查询动物数据。

通过该课程的实施AnimalService,我们将生成的数据与数据库操作结合起来,使我们的动物数据管理变得栩栩如生。最后,我们通过类中的 RESTful 端点公开我们的动物服务AnimalResource,允许我们通过 HTTP 请求与服务交互。

您可以在GitHub上探索该项目的完整源代码。(github.com/o-s-expert/harperdb-samples/tree/main/02-hello-world-quarkus)请随意分叉、修改和扩展它以满足您的需求。

当您继续进入 HarperDB 和 Quarkus 的世界时,请记得查阅HarperDB 文档中提供的全面的 HarperDB 文档,以更深入地了解 HarperDB 的功能和特性。

在 HarperDB 官方网站上随时了解最新更新、发行说明和新闻,以确保您始终使用最新信息。查看最新的发行说明,了解 HarperDB 中的新增功能和改进内容。

通过结合 Quarkus 和 HarperDB,您可以构建高效且可扩展的应用程序,以满足现代数字环境的需求。快乐编码!文章来源地址https://www.toymoban.com/diary/java/501.html

到此这篇关于利用 Quarkus 和 HarperDB 的强大功能进行高效的数据管理的文章就介绍到这了,更多相关内容可以在右上角搜索或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

领支付宝红包 赞助服务器费用
了解零信任安全构建更安全的数字世界
上一篇 2023年11月03日 15:03
下一篇 2023年11月03日 15:19

相关文章

  • 利用Hadoop进行数据湖构建与管理

    利用Hadoop进行数据湖构建与管理 一、引言 在大数据的时代,数据的增长速度已经远超过了传统的数据处理和存储能力。为了解决这个问题,数据湖的概念应运而生。数据湖是一个集中式的存储和处理平台,可以存储各种类型的数据,而不需要事先进行结构化的处理。Hadoop,

    2024年03月12日
    浏览(98)
  • YApi-高效、易用、功能强大的可视化接口管理平台——(一)使用 Docker 本地部署

    本内容以虚拟机【系统:Centos7】为例,云服务器步骤相同。使用Docker 的方式搭建 YApi,拉取 MongoDB 镜像和 YApi 镜像即可。 安装 yum 包更新到最新: 安装需要的软件包,yum-util 提供 yum-config-manager 功能,另外两个是 devicemapper 驱动依赖: 设置 yum 源为阿里云: 安装 Docker 社区版

    2024年02月13日
    浏览(50)
  • YApi-高效、易用、功能强大的可视化接口管理平台——(三)YApi 项目管理

    点击右上角的 + 新建项目,进入新建项目页面: 完善项目信息,指定项目所属分组,点击【+创建项目】: 注:权限公开私有可以在项目创建之后进行设置。 查看创建好的项目: 在项目页点击上方的 设置 Tab 进入项目设置面板,这个面板涵盖了项目的所有配置: 在【项目配

    2024年02月13日
    浏览(44)
  • 【重新定义matlab强大系列六】利用matlab进行一维滤波or二维滤波

    🔗 运行环境:matlab 🚩 撰写作者:左手の明天 🥇 精选专栏:《python》 🔥  推荐专栏:《算法研究》 ####  防伪水印—— 左手の明天 #### 💗 大家好🤗🤗🤗,我是 左手の明天 !好久不见💗 💗今天开启新的系列—— 重新定义matlab强大系列 💗 📆 

    2024年02月05日
    浏览(64)
  • 【重新定义matlab强大系列十二】利用matlab对数据进行分组和分 bin

    🔗 运行环境:Matlab 🚩 撰写作者:左手の明天 🥇 精选专栏:《python》 🔥  推荐专栏:《算法研究》 ####  防伪水印—— 左手の明天 #### 💗 大家好🤗🤗🤗,我是 左手の明天 !好久不见💗 💗今天开启新的系列—— 重新定义matlab强大系列 💗 📆  最近更新:

    2024年02月11日
    浏览(47)
  • JAVA:利用JUnit进行高效的单元测试

    1、简述 在软件开发中,单元测试是确保代码质量和可维护性的关键步骤。JUnit作为Java领域最流行的单元测试框架之一,提供了简单而强大的测试工具,可以帮助开发者在项目开发过程中及时发现和修复代码中的问题。本文将介绍JUnit的基本用法以及一些高效的单元测试技巧,

    2024年02月03日
    浏览(68)
  • 如何利用小红书笔记API进行高效内容运营?

    随着数字化时代的来临,内容运营在品牌营销中占据了越来越重要的地位。小红书作为全球最大的生活方式分享社区之一,拥有数亿用户和海量的优质内容。通过利用小红书笔记API,内容运营者可以更加高效地管理、发布和推广内容,提升品牌影响力,增加用户互动和转化率

    2024年04月12日
    浏览(56)
  • java利用缓冲区及流式对大文件进行高效读写

    当处理大文件时,使用适当的技术和方法可以提高读写性能和效率。下面是一些针对大文件读写的示例说明: 字符流 缓冲区及分块读写  BufferedInputStream 和 BufferedOutputStream 大文件读取: try (FileInputStream fis = new FileInputStream(\\\"largefile.txt\\\");      BufferedInputStream bis = new BufferedInp

    2024年02月07日
    浏览(41)
  • 【头歌】——数据分析与实践-基于Python语言的文件与文件夹管理-文本 文件处理-利用csv模块进行csv文件的读写操作

    第1关 创建子文件夹 第2关 删除带有只读属性的文件 第3关 批量复制文件夹中的所有文件 未通过本题,如果您通过了本题欢迎补充到评论区,有时间我会整理进来 第1关 读取宋词文件,根据词人建立多个文件 第2关 读取宋词文件,并根据词人建立多个文件夹 第3关 读取宋词文

    2024年01月25日
    浏览(73)
  • 在实现高效解决3D非流体静力、湍流、不可压缩空气/水流问题中,探索RANS与多相RANS模块的深度应用:带您解锁CFD的强大功能

    尊敬的读者,您好!我非常感谢您的光临,希望您在阅读本篇文章的时候,可以获得一些有价值的信息。在此,我要谦虚地说,我不是一个专家,只是一个热爱研究和分享知识的学者。我期待从您那里得到反馈,我们一起学习,一起进步。 ** ** 在过去的十几年里,计算流体动

    2024年02月15日
    浏览(56)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包