《CDP企业数据云平台从入门到实践》——CDP之操作型数据库(2)

简介: 《CDP企业数据云平台从入门到实践》——CDP之操作型数据库(2)

《CDP企业数据云平台从入门到实践》——CDP之数据储存(1) https://developer.aliyun.com/article/1226442?groupCode=ClouderaCDP


4. OPDB 如何适应用户环境


如图所示,操作型数据库中的数据来源于不同的途径,有实时采集数据、离线批量转换数据等。因此,操作型数据库中的数据大致会包含两类:实时处理后的数据和批量处理后的数据。整理好的数据可以支持三类场景:


• 企业内部应用:CRUD、状态持久性、事务、操作报告等。

• 数据仓库:针对分析工作负载提取到 DW 做进一步的分析使用操作。

• 机器学习:构建特征仓库和模型服务等。


在企业内部应用和机器学习中更新的数据也会返回到操作型数据库中。


image.png


5. OPDB 数据摄取


下图了最的将数据载到 OPDB 工具

image.png


二、 通过 OPDB 构建应用


1. NoSQL 的含义


NoSQL = Not Only SQL,运用原生稀疏矩阵模型,以多种方式最优地表示数据。NoSQL 的类型包括:


• 时间序列:排序键和列访问允许高效存储和检索时间序列数据。

• 图:可以用多种方式表示,最常见的是使用一个表来表示顶点,另一个表示边。

• 关系:关系表、行和列可以通过 Phoenix 直接映射到它们的 OPDB 等价物。

• 文档:可以存储多媒体文件等二进制文件,也可以使用列来分解文档来表示属

性。


2. OPDB SQL 特性


1) 基于 SQL 的接口

用户可以使用符合 ANSI 的 SQL 简化数据访问。


下图列举了相同任务(Task)使用 HBase Java API 和使用 SQL 操作的代码,可以看到使用 SQL 的代码更简便:


image.png

2) Schema 演变


Schema 的演变实现更少的数据建模,更多的模型数据。

下面列举了实例中的三个操作进行讲解:


操作一:

CreateatableCREATETABLEusers (idINTEGERPRIMARYKEY, usernameVARCHAR);
UPSERTINTOusers (id, username) VALUES (1, 'admin ');
SELECT*FROMusers;

image.png



操作二:

Addanewcolumn(withoutredefiningthetable)UPSERTINTOusers (id, username, stateVARCHAR) VALUES (2, 'KM ',  
'CA ');
SELECT*FROMusers;

image.png


操作三:

QuerythenewcolumnSELECT*FROMusers (stateVARCHAR);
--orCREATEVIEWv1ASSELECT*FROMusers (stateVARCHAR);
SELECT*fromv1;


image.png


通过以上方式进行数据 Schema 的演变,可以有效的减少 Schema 的维护以及数据迁移操作。


3) 多行事务


Phonix 的 SQL 代码与 MySQL 的代码相同:通过这种方式可以支持数据作为事务提交。


4) 二级索引


二级索引是非主键谓词的点查找和扫描。


OPDB 存储按主键顺序索引的数据,使用主键谓词的点查找和范围扫描速度很快。使用二级索引可以避免由于没有主键谓词的查询而导致的全表扫描,从而提高查询速度。


创建二级索引:


CREATETABLEuser (idBIGINTPRIMARYKEY, emailVARCHAR, pwVARBINARY, fnVARCHAR, lnVARCHAR);
CREATEINDEXidxONuser (email);
IncludefrequentlyaccessedcolumnswithcoveringindexesCREATEINDEXidxONuser (email) INCLUDE (pw);
SELECTemail, pwFROMuserWHEREemail='user@phoenix.apache.org  ';
UsearbitraryexpressionswithfunctionalindexesCREATEINDEXidxONuser (UPPER(ln||' '||fn)) INCLUDE (email) ;
SELECTemailFROMuserWHEREUPPER(ln||' '||fn) ='ALICE BOB ' ;


5) 时间旅行查询


时间旅行查询是查询过去状态的数据。


时间旅行对过去任何时间戳发出的相同查询将忽略自指定时间戳以来的任何更新,比如指定时间戳是去年一月,查询将忽略一月以后的数据更新,因此每次都会产生相同的结果。


常见的时间旅行用例:


• 调查:某些活动(例如欺诈调查)受益于能够检查特定时间点的记录状态。


• 机器学习:模型训练需要可重现。 时间旅行查询消除了提取和持久化训练数据的需要,大大简化了流程。


通过将 CurrentSCN 会话属性设置为过去的时间戳来发出时间旅行查询:


LongoneHourAgo=System.currentTimeMillis() -60*60*1000 ;
props.setProperty("CurrentSCN", oneHourAgo);
Connectionconn=DriverManager.connect(myUrl, props);
conn.createStatement().execute("SELECT * FROM users WHERE email =  'users@phoenix.apache.org '");


《CDP企业数据云平台从入门到实践》——CDP之数据储存(3) https://developer.aliyun.com/article/1226404?groupCode=ClouderaCDP




目录
相关文章
|
7月前
|
SQL 关系型数据库 数据库
Python SQLAlchemy模块:从入门到实战的数据库操作指南
免费提供Python+PyCharm编程环境,结合SQLAlchemy ORM框架详解数据库开发。涵盖连接配置、模型定义、CRUD操作、事务控制及Alembic迁移工具,以电商订单系统为例,深入讲解高并发场景下的性能优化与最佳实践,助你高效构建数据驱动应用。
893 7
|
10月前
|
存储 JSON 关系型数据库
【干货满满】解密 API 数据解析:从 JSON 到数据库存储的完整流程
本文详解电商API开发中JSON数据解析与数据库存储的全流程,涵盖数据提取、清洗、转换及优化策略,结合Python实战代码与主流数据库方案,助开发者构建高效、可靠的数据处理管道。
|
存储 缓存 数据库
数据库数据删除策略:硬删除vs软删除的最佳实践指南
在项目开发中,“删除”操作常见但方式多样,主要分为硬删除与软删除。硬删除直接从数据库移除数据,操作简单、高效,但不可恢复;适用于临时或敏感数据。软删除通过标记字段保留数据,支持恢复和审计,但增加查询复杂度与数据量;适合需追踪历史或可恢复的场景。两者各有优劣,实际开发中常结合使用以满足不同需求。
1255 4
|
8月前
|
数据采集 关系型数据库 MySQL
python爬取数据存入数据库
Python爬虫结合Scrapy与SQLAlchemy,实现高效数据采集并存入MySQL/PostgreSQL/SQLite。通过ORM映射、连接池优化与批量提交,支持百万级数据高速写入,具备良好的可扩展性与稳定性。
|
9月前
|
存储 数据管理 数据库
数据字典是什么?和数据库、数据仓库有什么关系?
在数据处理中,你是否常困惑于字段含义、指标计算或数据来源?数据字典正是解答这些问题的关键工具,它清晰定义数据的名称、类型、来源、计算方式等,服务于开发者、分析师和数据管理者。本文详解数据字典的定义、组成及其与数据库、数据仓库的关系,助你夯实数据基础。
数据字典是什么?和数据库、数据仓库有什么关系?
|
8月前
|
人工智能 Java 关系型数据库
使用数据连接池进行数据库操作
使用数据连接池进行数据库操作
218 11
|
数据采集 数据库 Python
有哪些方法可以验证用户输入数据的格式是否符合数据库的要求?
有哪些方法可以验证用户输入数据的格式是否符合数据库的要求?
788 174
|
9月前
|
存储 关系型数据库 数据库
【赵渝强老师】PostgreSQL数据库的WAL日志与数据写入的过程
PostgreSQL中的WAL(预写日志)是保证数据完整性的关键技术。在数据修改前,系统会先将日志写入WAL,确保宕机时可通过日志恢复数据。它减少了磁盘I/O,提升了性能,并支持手动切换日志文件。WAL文件默认存储在pg_wal目录下,采用16进制命名规则。此外,PostgreSQL提供pg_waldump工具解析日志内容。
899 0

热门文章

最新文章