开源嵌入式数组引擎TileDB的简单使用

TileDB 是C++编写的存储和访问通用多维数组引擎,它的官方Github网站https://github.1git.de/TileDB-Inc/TileDB
1.下载源代码和二进制库
源代码https://github.1git.de/TileDB-Inc/TileDB/archive/refs/tags/2.28.1.tar.gz
选择符合你的机器CPU架构和操作系统的库
二进制库https://github.1git.de/TileDB-Inc/TileDB/releases/download/2.28.1/tiledb-linux-arm64-2.28.1-d648231.tar.gz
2.从源代码编译库
一般不需要,因为https://github.1git.de/TileDB-Inc/TileDB/releases/expanded_assets/2.28.1已经提供了大多数平台的现成库
如果需要,按照以下步骤
tar xf 2.28.1.tar.gz
然后按照解压的BUILDING_FROM_SOURCE.md文件提示的步骤,大致是

mkdir build
cd build
../bootstrap <flags>
# Or use CMake directly instead of bootstrap:
# cmake <flags> ..make -j <nprocs>make install

3.编译源代码中的例子
参照解压的USAGE.md文件提示的步骤,
定位到目录examples/c_api
以as_built.c为例,编译命令行如下,这里-I /shujv/par/tiledb/include-L /shujv/par/tiledb/lib分别是tiledb头文件和动态库的位置

gcc as_built.c -o as_built -ltiledb -I /shujv/par/tiledb/include -L /shujv/par/tiledb/lib

注意对系统c/c++库版本有要求,如果不满足,将报错

/shujv/par/tiledb/lib/libtiledb.so:对‘std::thread::_State::~_State()@GLIBCXX_3.4.22’未定义的引用
/shujv/par/tiledb/lib/libtiledb.so:对‘__cxa_init_primary_exception@CXXABI_1.3.11’未定义的引用
/shujv/par/tiledb/lib/libtiledb.so:对‘fcntl64@GLIBC_2.28’未定义的引用
/shujv/par/tiledb/lib/libtiledb.so:对‘getentropy@GLIBC_2.25’未定义的引用
/shujv/par/tiledb/lib/libtiledb.so:对‘logf@GLIBC_2.27’未定义的引用
/shujv/par/tiledb/lib/libtiledb.so:对‘operator new(unsigned long, std::align_val_t)@CXXABI_1.3.11’未定义的引用
/shujv/par/tiledb/lib/libtiledb.so:对‘typeinfo for std::thread::_State@GLIBCXX_3.4.22’未定义的引用

等等
我切换到gcc 14.2 docker镜像,编译就不报错了,注意要设置LD_LIBRARY_PATH环境变量加入tiledb动态库的位置

gcc as_built.c -o as_built -ltiledb -I  /par/tiledb/include -L /par/tiledb/lib
root@66d4e20ec1d7:/par/TileDB-main/examples/c_api# export LD_LIBRARY_PATH="/par/tiledb/lib:$LD_LIBRARY_PATH"
root@66d4e20ec1d7:/par/TileDB-main/examples/c_api# ./as_built
{"as_built": {"parameters": {"storage_backends": {"azure": {"enabled": true},"gcs": {"enabled": true},"s3": {"enabled": true}},"support": {"serialization": {"enabled": true}}}}

再编译query_condition_dense.c,能实现对数组条件查询,是不是有点像数据库

gcc query_condition_dense.c -o qcd -ltiledb -I  /par/tiledb/include -L /par/tiledb/lib
root@66d4e20ec1d7:/par/TileDB-main/examples/c_api# ./qcd   
Printing the entire array...
{null, alice, 0, 4.1}
{2, bob, 0, 3.4}
{null, craig, 0, 5.6}
{4, dave, 0, 3.7}
{null, erin, 0, 2.3}
{6, frank, 0, 1.7}
{null, grace, 1, 3.8}
{8, heidi, 2, 4.9}
{null, ivan, 3, 3.2}
{10, judy, 4, 3.1}Running read query with query condition `a = null`...
{null, alice, 0, 4.1}
{null, craig, 0, 5.6}
{null, erin, 0, 2.3}
{null, grace, 1, 3.8}
{null, ivan, 3, 3.2}Running read query with query condition `b < "eve"`...
{null, alice, 0, 4.1}
{2, bob, 0, 3.4}
{null, craig, 0, 5.6}
{4, dave, 0, 3.7}
{null, erin, 0, 2.3}Running read query with query condition `c >= 1`...
{null, grace, 1, 3.8}
{8, heidi, 2, 4.9}
{null, ivan, 3, 3.2}
{10, judy, 4, 3.1}Running read query with query condition `3.0f <= d AND d <= 4.0f`...
{2, bob, 0, 3.4}
{4, dave, 0, 3.7}
{null, grace, 1, 3.8}
{null, ivan, 3, 3.2}
{10, judy, 4, 3.1}Running read query with query condition `3.0f <= d AND d <= 4.0f AND a != null AND b < "eve"`...
{2, bob, 0, 3.4}
{4, dave, 0, 3.7}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/916746.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/916746.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AI对服务器行业的冲击与启示:从挑战走向重构

更多云服务器知识&#xff0c;尽在hostol.comAI&#xff08;人工智能&#xff09;技术的迅猛发展&#xff0c;已深刻影响了多个行业&#xff0c;服务器行业亦不例外。在过去&#xff0c;服务器的主要任务是简单地提供存储、计算和传输数据的服务。然而&#xff0c;随着AI的崛起…

基于三台主机搭建 Web 服务环境:Nginx、NFS 与 DNS 配置全流程

基于三台主机搭建 Web 服务环境&#xff1a;Nginx、NFS 与 DNS 配置全流程 一、引言 在当今数字化的时代&#xff0c;搭建一个稳定、高效的 Web 服务环境是许多开发者和运维人员的常见需求。本文将详细介绍如何利用三台主机搭建一个包含 Nginx、NFS 和 DNS 服务的 Web 环境&…

MySQL——MVCC

1.为什么需要MVCC在并发场景下&#xff0c;读写操作会面临严重的冲突问题&#xff1a;1.读操作如果遇到写操作&#xff0c;要么“读到未提交的脏数据”&#xff0c;要么“被写操作阻塞&#xff08;等待锁释放&#xff09;”&#xff1b;2.写操作如果遇到读操作&#xff0c;要么…

数据结构第2问:什么是算法?

算法 算法是一组用于解决具体问题的、明确的、有序的步骤或规则&#xff0c;能够在有限的时间内通过这些步骤得到问题的答案。 算法的5个重要特性&#xff1a; 有穷性&#xff1a;算法必须在有限的步骤内结束&#xff0c;不能无限循环&#xff0c;保证最终能够得到结果。确定性…

12-大语言模型—Transformer 打地基,下游任务盖出百样房,指标来验收|下游任务白话指南

目录 1、核心逻辑&#xff1a;Transformer 的 “语言处理闭环” 2、转导与感知 → 模型咋 “理解语言”&#xff1f; 2.1、 人类 vs 机器的 “语言理解逻辑” 2.2、 自注意力机制&#xff1a;模型 “理解语言” 的数学核心 2.2.1、通俗拆解 2.2.1.1、是什么&#xff1f; …

深入探索爬虫与自动化脚本:释放效率的利器

在当今信息爆炸的时代&#xff0c;高效获取和处理数据已成为核心竞争力。爬虫与自动化脚本正是解决这一痛点的关键技术——它们如同数字世界的勤劳助手&#xff0c;帮我们自动完成繁琐重复的任务。下面我们来系统了解这两项技术的核心要点、应用场景和最佳实践。一、爬虫与自动…

React函数组件的“生活管家“——useEffect Hook详解

&#x1f3af; React函数组件的"生活管家"——useEffect Hook详解 1. &#x1f31f; 开篇&#xff1a;从生活中的"副作用"说起 嘿&#xff0c;各位掘友们&#xff01;今天咱们来聊聊React函数组件里的一个“大管家”——useEffect Hook。你可能会问&#x…

python基础:request请求Cookie保持登录状态、重定向与历史请求、SSL证书校验、超时和重试失败、自动生成request请求代码和案例实践

Cookie保持登录状态cookie session鉴权机制 cookie是由web服务器保存在用户浏览器&#xff08;客户端&#xff09;上的小文本文件&#xff0c;他可以包含有关用户的信息。无论何时用户访问到服务器&#xff0c;都会带上该服务器的cookie信息&#xff0c;一般cookie都是有有效期…

Vulkan入门教程 | 第二部分:创建实例

前言&#xff1a;本教程为笔者依据教程https://docs.vulkan.net.cn/spec/latest/index.html#_about进行Vulkan学习并结合自己的理解整理的笔记&#xff0c;供大家学习和参考。 &#xff08;注意&#xff1a;代码仅为片段&#xff0c;非完整程序&#xff09; 学习前提&#xff1…

PHP云原生架构:容器化、Kubernetes与Serverless实践

引言 随着云计算的普及,PHP应用也在向云原生架构演进。本文将深入探讨PHP在云原生环境中的最佳实践,包括容器化部署、Kubernetes编排、Serverless架构以及云原生监控与日志方案,帮助开发者构建现代化、可扩展的PHP应用。 容器化PHP应用 基础Dockerfile优化 # 多阶段构建…

【华为机试】5. 最长回文子串

文章目录5. 最长回文子串描述示例 1示例 2示例 3示例 4提示解题思路方法一&#xff1a;中心扩展法&#xff08;推荐&#xff09;方法二&#xff1a;动态规划方法三&#xff1a;Manacher算法方法四&#xff1a;暴力解法代码实现复杂度分析测试用例完整题解代码5. 最长回文子串 …

【图像处理基石】如何对遥感图像进行实例分割?

遥感图像实例分割是指在遥感影像中&#xff0c;不仅要识别出不同类别的目标&#xff08;如建筑物、车辆、道路等&#xff09;&#xff0c;还要区分同一类别中的不同个体&#xff08;如建筑物1、建筑物2&#xff09;&#xff0c;并为每个实例生成精确的像素级掩码。 一、遥感图…

电子电气架构 --- 软件bug的管理模式

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 简单,单纯,喜欢独处,独来独往,不易合同频过着接地气的生活,除了生存温饱问题之外,没有什么过多的欲望,表面看起来很高冷,内心热情,如果你身…

【每日一错】Oracle 19c CDB中如何启动一个PDB

文章目录题目扩展学习CDB与PDB的概念CDB&#xff0c;PDB结构优势总结题目 扩展学习 CDB与PDB的概念 在Oracle 12c及以上版本&#xff0c;Oracle引入了多租户架构&#xff0c;这种架构让数据库的管理和资源使用更加高效。它由两种主要组成部分组成&#xff1a; CDB&#xff0…

Android studio自带的Android模拟器都是x86架构的吗,需要把arm架构的app翻译成x86指令?

Android studio自带的Android模拟器都是x86架构的吗&#xff0c;需要把arm架构的app翻译成x86指令&#xff1f; deepseek回答&#xff1a; Android Studio 自带的官方模拟器&#xff08;Android Emulator&#xff09;主要提供基于 x86 架构的系统镜像。当运行 ARM 架构的应用…

Deep Learning_ Foundations and Concepts-Springer (2024)【拜读】20章3节

Diffusion Models 扩散模型 我们已经了解到&#xff0c;构建强大的生成模型的一种有效方法是&#xff1a;先引入一个关于潜在变量z的分布p(z)&#xff0c;然后使用深度神经网络将z变换到数据空间x。由于神经网络具有通用性&#xff0c;能够将简单固定的分布转化为关于x的高度灵…

Arduino与STM32:初学者该如何选择?

在电子爱好者和初学者的世界里&#xff0c;Arduino和STM32是两个经常被提及的名字。它们各自具有独特的优势和特点&#xff0c;适合不同类型的项目和需求。对于初学者来说&#xff0c;选择Arduino还是STM32&#xff0c;往往取决于个人的学习目标、项目需求以及预算。本文将详细…

创建型设计模式-工厂方法模式和抽象工厂方法模式

1、工厂方法模式 创建型设计模式之一 UML类图2、抽象工厂模式 也是创建型设计模式之一。虽然抽象工厂方法模式的类繁多&#xff0c;但是&#xff0c;主要分为4类。 AbstractFactory&#xff1a;抽象工厂角色&#xff0c;它声明了一组用于创建一种产品的方法&#xff0c;每一个方…

Hyperchain安全与隐私机制详解

一、核心安全机制1. 共识算法安全RBFT共识算法&#xff1a;改进型PBFT&#xff1a;基于PBFT算法优化&#xff0c;增加动态节点管理、失效数据恢复机制&#xff0c;提升系统容错性与可用性。性能指标&#xff1a;吞吐量稳定达3000-10000 TPS&#xff0c;交易执行时间控制在300ms…

Oracle优化学习十六

反连接反连接&#xff08;Anti Join&#xff09;是一种特殊的连接类型&#xff0c;与内连接和外连接不同&#xff0c;Oracle数据库里并没有相关的 关键字可以在SQL文本中专门表示反连接&#xff0c;所以这里把它单独拿出来说明。为了方便说明反连接的含义&#xff0c;我们用“t…