-
尊敬的各位云数据库开发者 感谢大家对华为云数据库的关注与支持。 本帖为HDC直播的问题&咨询交流总帖。大家在观看直播和录播的过程中遇到任何问题,均可以通过本帖进行反馈。我们会安排专人进行问题的收集与解答。请大家按照以下格式进行回帖:问题/咨询提交格式————————————————反馈类型(问题/咨询/建议):问题出现时间:问题/咨询/建议描述:截图(可选):————————————————大家也可以移步华为云数据库各直播主题分帖进行沟通交流 (有码豆拿哦~):《揭秘多模NoSQL数据库GeminiDB的5大黑科技》问题交流帖 <点我前往>《云上数据库迁移:从小白到大咖的进阶之路》问题交流帖 <点我前往> 《华为云数据库最佳实践案例分享》问题交流帖 <点我前往>
-
摘要:3月17日15点,看云数据库专家解读安全防护秘籍,赢荣耀手机和手环 随着数字化进程和企业上云的加快,越来越多的企业为保证数据安全,纷纷选择把云下数据库迁移至云上。目前,华为云数据库已上线MySQL、GeminiDB、TaurusDB、GaussDB T、PostgreSQL、SQL Server、DDS(文档数据库服务)、DDM(分布式数据库中间件)、DRS(数据复制服务)、DAS(数据管理服务)等10款服务,基于华为累积多年的数据库研发、搭建和维护经验,结合数据库云化改造技术,精心打造更高可用、更高可靠、更高安全、更高性能、即开即用、便捷运维、弹性伸缩的数据库服务,提供容灾、备份、恢复、安防、监控、迁移等全面能力,聚焦金融、互联网、车企、物联网、游戏、ISV等行业,提供全套云上数据库解决方案。 华为云数据库致力于打造云上数据最佳使用平台,为千行百业提供一站式服务,加速行业落地,实现企业创新升级,打造企业数据最强底座。 众所周知,数据作为企业的底层建筑,数据库信息的安全及完整性对企业业务持续发展起着至关重要的作用。而对于企业来讲,数据面临权限管理困难,审计合规薄弱,专业人才难觅,容灾能力欠缺等困境,很大程度地影响了企业的发展。华为云数据库提供了完整的安全解决方案。5步操作帮您杜绝数据库安全风险1、建立完备的安全管控机制建立完备的安全管控机制,使用DAS企业版三权分立解决DBA权限集中问题,针对不同的业务需求提供最小的授权,通过白名单机制限制来访数据库的服务器IP。对于高危操作,需要严格的三级权限审批管控。2、确保审计合规数据安全对数据库行为进行严格的审计和监控,定期向负责人发送审计报告。使用DBSS防止数据库被异常行为攻击。针对不同的用户角色,设置脱敏规则,对查询进行脱敏。3、搭建高可用和异地容灾环境相较于自建数据库,使用华为云DRS数据库服务,能让您快速拥有安全可靠的管控系统和高可用能力,并且具备跨区域容灾能力。4、定期进行备份恢复演练每天对数据库进行全量和增量备份,并进行归档。定期进行恢复演练,验证备份恢复流程的有效性。5、留下最后的救命稻草针对删库跑路行为,华为云RDS数据库服务提供7天以内的回收站功能,让您能及时找回被删除的实例。当下正值特殊时期,为助力中小企业实现安全高效复工复产,华为云WeLink凭借华为云数据库的高安全性,切实保障企业客户数据的安全。作为一个安全、开放、智能的办公服务平台数据底座,华为云数据库MySQL有效地保障企业云上办公的数据稳定可靠,使企业用户在家办公变得更轻松高效,成为企业数据上云的首选。直播福利抢不停,华为云数据库助您安全上云 值此开年采购季期间,华为云特此推出云数据库直播大卖场,直播将于3月17日(周二)15:00-16:30震撼来袭。此次直播不仅有高级专家为您详细解读如何做到数据安全,还会分享如何最划算地购买华为云数据库产品,助力全国企业低成本上云,保障企业数据的高可靠,为企业发展保驾护航。 除此之外,直播期间将会开启专属互动环节,并有机会赢取荣耀手环4、荣耀手机20S、直播专享代金券等直播专属福利。心动的小伙伴可通过以下方式进行报名:加小助手微信【cloud_xiaolu】,小助手会拉您进入直播福利群还会及时的提醒您开播时间。敬请关注华为云开年采购季云数据库直播大卖场!直播链接:https://huaweicloud.bugu.mudu.tv/watch/4mavjpvm扫码入群
-
以鲲鹏为底座,华为云数据库到底卓越在哪?【华为云大咖说】给你答案!参与直播讨论有豪礼相送喔~点击下方链接或者扫描下方长图二维码立即围观直播<点我观看直播>首届线上华为开发者大会HDC.Cloud于3月举行,众多数据库大咖会师云上,与开发者一同云游盛会。华为云数据库专场直播、线上展厅、Codelabs实践体验,尽情展现华为云数据库黑科技,分享数据迁移、基于Python搭建云数据库应用等技术体验,干货满满、精彩纷呈。还有码豆积分惊喜,轻松兑换各种定制礼品,以及社区论坛盖楼赢华为云云宝、京东卡、移动电源等好礼,让您轻松畅游又学有所获。
-
华为云数据库服务(Database Service)致力为客户提供稳定可靠、可弹性伸缩的在线数据库服务产品。 数据库服务云图说合集期数云图说---服务介绍1初识华为云关系型数据库(RDS)2华为云文档数据库服务(DDS),多快好省惠3超便捷的华为云数据复制服务(DRS)4初识数据管理服务(DAS)5初识GaussDB(for MySQL) 华为云海量存储分布式数据库6华为云自研云数据库GaussDB NoSQL——兼容多款NoSQL接口的数据库服务7初识华为云分布式数据库中间件DDM 8 初识华为云数据库GaussDB,新一代企业级分布式数据库 9 初识云数据库GaussDB(for Cassandra) ——华为新一代Cassandra宽列云数据库10初识云数据库GaussDB(for Redis)11初识数据库和应用迁移 UGO ...未完待续 小云妹带你了解数据库实用小技能~期数云图说---小云妹的数据库之旅1万万没想到,云数据库RDS for MySQL是这样的!2这些购买云数据库RDS for MySQL的技能实用到哭,你确定不来看看?3云数据库RDS for MySQL一键实现弹性扩展是种什么样的体验?4太给力了!认识云数据库 RDS for PostgreSQL只需要这三步5这才是云数据库RDS for SQL Server最正确的打开方式6数据库的私人医生——云DBA7快速玩转关系型数据库实例操作1(单机转主备、按需转包周期)8小云妹带您揭秘数据复制服务四大功能9小云妹之DDS实例安全基本操作10快速玩转关系型数据库实例操作2(删除与退订)11DAS表结构对比与同步 实现您多个数据库管理心愿12文档数据库可视化运维 高频需求一键式便捷操作13华为云数据复制服务DRS 打造不一样的数据库迁移14华为云数据库MySQL内核小版本升级全攻略15将源端MongoDB业务搬迁至华为云DDS的几种方式16 读请求太多怎么办?云数据库 RDS for MySQL一键开通读写分离,轻松应对业务高峰期17DRS数据对比——带您随时观测数据一致性18云数据库RDS——跨区域备份19DDS读写两步走 带您领略只读节点的风采20一张图了解GaussDB(for Redis)双活解决方案21云数据库GaussDB(for MySQL)事务拆分大揭秘22 云数据库GaussDB如何做到卓越性能 ...未完待续 云数据库 RDS 类别资料链接视频2分钟了解云数据库MySQL3分钟了解云数据库SQL Server2分钟了解云数据库PostgreSQL入门介绍初识华为云数据库RDS技术画册云数据库MySQL技术画册最佳实践下载备份文件和恢复数据排查RDS for MySQL CPU使用率高的原因和解决办法使用RDS MySQL搭建Wordpress使用RDS MySQL搭建Discuz!论坛查看 PostgreSQL慢日志恢复备份文件到RDS for SQL Server 实例的版本限制使用导入导出功能将ECS上的SQL Server数据库迁移到RDS for SQL Server RDS for SQL Server 支持DMV动态管理视图修改SQL Server 数据库实例的参数组APIAPI概览白皮书安全白皮书性能白皮书文档中心产品文档常见问题新手入门运维案例mysql远程连接报错,如何处理?如何使用修改表方式修改mysql5.7密码如何查看RDS存储空间使用量如何对RDS慢日志进行查询RDS主备复制关系异常,如何处理?SQL Server连接不上的判断方法 文档数据库服务DDS类别资料链接视频2分钟了解文档数据库服务DDS入门介绍 华为云文档数据库服务(DDS),多快好省惠最佳实践DDS增强版实例使用须知如何连接副本集实例以实现读写分离和高可用设置数据分片以充分利用分片性能性能白皮书DDS增强版DDS社区版文档中心产品文档常见问题新手入门 数据复制服务 DRS类别资料链接视频数据复制服务(DRS)简介入门介绍超便捷的华为云数据复制服务最佳实践跨云数据库在线迁移本地数据库在线迁移ECS自建数据库在线迁移文档中心产品文档常见问题新手入门 数据管理服务 DAS类别资料链接视频3分钟了解数据管理服务(DAS)入门介绍初识数据管理服务(DAS)上云方案数据库上云最佳管理方案实践文档中心产品简介产品文档常见问题新手入门 分布式数据库中间件DDM类别资料链接视频2分钟了解华为云分布式数据库中间件入门介绍初识华为云分布式数据库中间件DDM最佳实践合理制定分片策略如何选择DDM逻辑库分片数广播表和单表的使用场景文档中心产品简介产品文档常见问题新手入门 云数据库GaussDB(for MySQL)类别资料链接视频云数据库GaussDB(for MySQL)简介入门介绍初识GaussDB(for MySQL) 华为云海量存储分布式数据库文档中心产品简介产品文档常见问题新手入门 云数据库GaussDB(for Cassandra)类别资料链接视频GaussDB(for Cassandra)简介入门介绍初识云数据库GaussDB(for Cassandra) ——华为新一代Cassandra宽列云数据库文档中心产品简介产品文档新手入门 云数据库GaussDB(for mongo)类别资料链接视频GaussDB(for mongo)简介入门介绍华为云自研云数据库GaussDB NoSQL——兼容多款NoSQL接口的数据库服务文档中心产品简介产品文档新手入门 云数据库GaussDB(for Influx)类别资料链接视频GaussDB(for Influx)简介入门介绍华为云自研云数据库GaussDB NoSQL——兼容多款NoSQL接口的数据库服务文档中心产品简介产品文档新手入门 云数据库GaussDB(for Redis)类别资料链接视频GaussDB(for Redis)简介入门介绍初识云数据库GaussDB(for Redis)文档中心产品简介产品文档新手入门 云数据库GaussDB 类别资料链接入门介绍初识华为云数据库GaussDB,新一代企业级分布式数据库文档中心产品简介产品文档常见问题新手入门
-
想知道云数据库怎么买最划算?【云数据库直播大卖场】给你答案!我们请到了两位大咖不但会告诉大家开年采购季如何击穿数据库低价,还会分享华为云数据库提供的五大安全秘籍,让企业关键数据稳如泰山,远离数据“黑天鹅”直播链接:https://huaweicloud.bugu.mudu.tv/watch/4mavjpvm 直播时间:2020年3月17日(周二)15:00-16:30扫描下方二维码立即加入微信群直播福利抢先知: 如无法加群可加小助手微信【cloud_xiaolu】,小助手会拉您进入直播福利群还会及时的提醒您开播时间。直播专属惊喜福利:1、 微信群盖楼有礼:扫码进入微信群的小伙伴,小助手将提前预告抽楼层活动,送荣耀手环4一个,如此简单即可得大礼,千万不要错过噢!2、 观看直播互动有礼:在直播过程中留言盖楼和问题抢答,就有机会获得价值149元的荣耀手环4一个,共送5个。3、下单赢豪礼:直播开始后前10名下单的小伙伴,每人送价值149元的荣耀手环4一个;使用直播专享代金券下单的小伙伴们,当购买数据库产品累计付费达到3000元以上的付费TOP1用户,赠送价值1899元的荣耀手机20S一部。
-
-
尊敬的各位云数据库开发者 感谢大家对华为云数据库的关注与支持。 本帖为Codelabs咨询和问题反馈收集帖。大家在体验数据库Codelabs的过程中的任何问题和建议,均可以通过本帖进行反馈。我们会安排专人进行问题的收集与解答。请大家按照以下格式进行回帖:问题/咨询提交格式————————————————反馈类型(问题/咨询/建议):华为云账号:问题出现时间:问题/咨询/建议描述:截图:————————————————大家也可以移步华为云数据库Codelabs活动主帖,探索更多玩法,赢取精美礼品:<点我前往数据库Codelabs主贴>
-
新得一年,小云妹我又带着数据库的新知识来了,实例性能不断提升,升级必须安排上。云数据库 RDS for MySQL支持自动和手动升级内核小版本啦,详细操作,云图说为您详解~云数据库 RDS for MySQL介绍页入口:https://www.huaweicloud.com/product/mysql.html云数据库 RDS for MySQL成长地图入口:https://support.huaweicloud.com/rds/index.html【往期回顾】●【第一期】初始华为云关系型数据库RDS●【第二期】万万没想到,云数据库MySQL原来是这样的!●【第三期】这些购买云数据库MySQL的技能实用到哭,你确定不来看看?●【第四期】云数据库MySQL一键实现弹性扩展是种什么样的体验?●【第五期】太给力了!认识云数据库PostgreSQL只需要这三步●【第六期】这才是云数据库SQL Server正确的打开方式●【第七期】数据库的私人医生——云DBA●【第八期】小云妹带你快速玩转关系型数据库实例操作(一)●【第九期】小云妹带你快速玩转关系型数据库实例操作(二)
-
在很长一段时间内,企业为了自身发展大多选择自建数据库,而随着企业的发展壮大和数据量的猛增,自建数据库越来越不能满足企业对数据库提出的高要求。为了更好地管理和使用海量数据,越来越多企业选择把云下数据库迁到云上,MongoDB数据库也在企业上云过程中展现出了蓬勃的发展张力。自建MongoDB VS 云上MongoDB服务可用自建MongoDB一般是自我深度优化后的产品,往往较原生性能有较大的提升,这也变相为用户提高了综合性价比。自建MongoDB针对原生产品功能不足,增强其功能,尤其是优先满足了一些企业特别需要的企业级功能,这也成为很多线下客户选择云数据库产品的重要考量因素。自建MongoDB的客户根据自己在某业务领域的积累,有针对性地增加了特定场景下的数据库端解决方案,有效提升了竞争力。云厂商立足根本,考验的是技术底蕴,需要企业长期投入并不断锤炼,还需要注重其兼容性,尽量减少对企业现状的冲击,并为其他有可能的选择做必要的铺垫。除此之外,监控、备份恢复、优化、容灾等服务能力对于企业的使用必不可少,如果没有云的话,这些能力往往需要企业花费大量精力去自建。云生态功能如果说上述功能企业还能容易具备,那么云功能则相对门槛过高了。云是指诸如弹性扩容/缩容等服务功能,这类能力往往需要依托强大的底座能力,需要较大的研发投入和长期积累才能具备。在某些特定场合下(如业务形态、幅度变化很大的企业客户)很具吸引力。企业选择上云,往往不仅仅依靠一两款产品,更多的是看中云端生态功能。对于企业来讲,如何通过云端打通技术瓶颈,快速具备业务能力成为核心。例如从数据埋点、数据捕捉、数据存储、数据计算到分析展示。如果全流程都可以在云端无缝集成,那么对于企业来说,无疑是一种很成功的服务体验。上云成本自建MongoDB在人力、财力、时间、风险等四个方面具有较大的成本。除了这些之外,我们也能经常听见客户的声音,如依赖过度、性能差、竞争力弱等,而随着上云进程的加快和各类基础云设施的完善,越来越多的企业把目光投向了云数据库。华为云GeminiDB for MongoDB接口的独特优势基于云时代下客户数据上云和企业的数字化转型,华为云数据库精心推出了一款产品—— GeminiDB。这是一款基于华为自主研发的计算存储分离架构的分布式多模NoSQL数据库服务,100%兼容MongoDB接口,并提供高性能、高可靠的优势和企业级服务。与自建MongoDB和市面上各类MongoDB云服务相比,GeminiDB for MongoDB接口构筑了以下优势:一是分钟级计算节点扩容和秒级存储扩容,扩容性能提升百倍,满足敏捷业务弹性需要。▸二是高性能,同等成本下提升了3倍读写性能。▸三是数据高可靠,基于分布式存储的数据副本故障快速恢复能力,副本重建时长缩短10倍+。此外,GeminiDB for MongoDB接口支持单套实例最大100TB数据,N-1个节点故障容忍,具备一键部署、监控报警等服务能力。华为云GeminiDB for MongoDB接口的应用实践MongoDB 的应用已经渗透到各个领域,比如游戏、物流、电商、内容管理、社交、物联网、视频直播等。华为云GeminiDB for MongoDB接口凭借过硬的技术优势和服务能力成功助力国家地理信息公共服务平台天地图,将44项在线业务全部迁移部署在华为云上,数据更新效率得到明显提升,原来需要15天才能完成的16TB全库数据恢复,现在2~3天就能完成;过去需要5小时才能完成的300GB数据迁移,现在1小时就能完成。此外,华为云GeminiDB for MongoDB接口还成功帮助锦江都城酒店PMS核心业务系统的迁移,PMS涉及渠道、支付、硬件、公安等接口的百项变更,对于连锁酒店而言是业内难度最高的迁移之一。而采用GeminiDB后,锦江都城的系统负载实现了3/4的降幅,能维持在20%左右,基本上不存在资源压⼒和系统稳定性⽅面的隐患。云数据库MongoDB的优势不言而喻,华为云数据库也会持之以恒地构筑GeminiDB for MongoDB接口的技术优势和服务能力,未来云数据库MongoDB的发展会越来越蓬勃,生命力也愈加强劲。目前,华为云数据库开年采购季活动火热进行中,在迁移专区购买数据库的用户, 使用数据复制服务DRS迁移数据上云后免费赠送6个月时长。
-
错过了3月24日数据库大咖直播?不要紧~!我们为你准备了完整的录播!↓↓↓ 想了解数据库领域最新技术变革和实践应用的小伙伴看这里 ↓↓↓→ <点我观看完整录播> ←如果对数据库产品有任何问题,也可以在这里反馈:<点我前往问题交流帖>我们会安排专人解答你的疑问HDC规则太复杂?现在带你玩转Codelabs,奖励拿到手软~小白如何体验Codelabs?小编悄悄告诉你,每个Codelab都有对应的专家指导视频哦~即刻前往云数据库线上展厅观看视频,然后体验Codelab,完成从小白到大神的蜕变~数据库Codelabs体验与视频链接 基于Python搭建云数据库应用 <点我体验Codelab> <点我观看视频> DAS数据追踪与回滚体验 <点我前往Codelab> <点我观看视频> GeminiDB性能比拼 <点我前往Codelab> <点我观看视频> GeminiDB扩容比拼 <点我前往Codelab> <点我观看视频> TaurusDB 性能比拼 <点我前往Codelab> <点我观看视频> 本地MySQL数据库在线迁移 <点我前往Codelab> <点我观看视频>活动时间2020年3月23日-2020年3月28日参与方式点击上方体验链接,完成Codelabs体验流程,将完成结果截图即可参与评论数据库Codelabs互动交流贴各位开发者对于Codelabs有任何疑问或者建议,都可以移步交流帖与我们沟通哦!<点击前往>Codelabs汇总贴如果大家想了解其他Codelabs信息,也可以到汇总贴参观~ <点击前往>获奖信息填写指导请中奖的开发者按照《Codelabs互动活动中奖人收货信息填报操作指导》填写收货信息,我们将在活动结束后(3月28日)4月份为您陆续寄出礼品(所有礼品最终解释权归华为所有)<点击前往填报操作指导> 福利一:参与体验Codelabs即可赢取码豆(码豆获取待定),兑换海量精美礼品:(HDC官网) 3月9日~3月25日期间,开发者可登陆免费领取100元代金券 <点击领取> 3月23日~3月28日期间,开发者如需领取第二张代金券,可点击此链接申请 <点击申请> 四大主题活动,百万码豆等你来瓜分 <点击前往> 福利二:除了获得码豆兑换奖礼品,数据库还为大家额外准备了惊喜哦,具体玩法见下: 玩法:请大家在体验数据库Codelabs完成后,将结果截图和体验感受回复在帖子中(截图中须体现用户名) 1、末尾为“9”的楼层,将会获得华为云云宝一个,仅限前200名。 2、评论+点赞数总和最多的前5个楼层,将会获得京东卡100元1张 3、同时我们也会挑选3名精彩回复(例如:谈谈自己对云数据库的理解、建议)送出神秘工程师大礼包 (包含:移动电源+运动发带+腰包或者背包+多功能数据线+旅行睡眠套装+户外小手电) 4、深度解析华文云数据库的文章,我们会邀请专家评选出3篇精彩文章,每人赠送价值500元的云数据 库代金券。 特别提醒: 1、回帖字数必须大于等于15个字,并且附上有效的数据库Codelabs体验截图。 2、每个人至少完成一次有效的Codelab体验方可参与抽奖活动。 3、每个Codelab截图仅以第1次回帖为准(1个Codelab截图,多次回帖无效)。体验越多个数据库 Codelabs,中奖率越高! 4、体验过程中如果代金券余额不足,可点击链接免费申请第二张代金券。 奖池包括但不仅限于以下奖品哦~获奖名单公布请以上获奖者尽快发消息给版主“无关风月”核对收货地址,核对完成后奖品陆续发出,感谢大家的参与!获奖名单获得奖品KennyChan工程师大礼包、华为云云宝linzhuofeng工程师大礼包、华为云云宝追光者2020华为云云宝linjiachen华为云云宝chenzeshi华为云云宝以上奖品均已发出,请各位幸运开发者注意查收~如有疑问请私信版主“无关风月”
-
最近有个删库跑路的帖子在网上引起热议,很多企业管理者都开始担忧数据库的安全可靠性。 其实是数据库安全和备份机制没做到位,如果一开始就采用严密的安全机制和完善的数据库备份机制,那么即便是误删了数据库也可以恢复如初。安全没到位再多功能体验也白搭数据安全是守护企业生命的一道有力防线,对企业未来发展至关重要。但绝大多数中小企业的自建数据库和一些云厂商的云数据库服务往往忽略了数据安全的重要性,自身安全防护机制不够严谨,容易面临各种网络攻击和企业内部高危操作的风险,尤其是对恶意删库这种致命性打击行为没有防护、追溯和恢复的能力。因此,我们应该更多思考的是如何保证数据不丢失,如何确保企业数据安全。那么,华为云提供了哪些安全机制,可以帮助企业避免这样的灾难性故障呢?保证数据高安全华为云数据库是这样做的华为云数据库通过VPC、子网、安全组、DDOS防护、数据加密、SSL加密传输、权限控制、回收站等多层安全防护体系,严格控制数据库实例的操作权限,详细记录数据库控制台操作和SQL执行日志,隔离对数据库的恶意访问,并在删库事件发生后具备保命的恢复逃生手段,可谓是三维一体、能够有效抵御网络攻击的防护措施。同时配合数据库安全服务DBSS提供的数据脱敏、数据库审计和防SQL注入攻击等功能,共同为企业数据安全保驾护航。针对删库这种降维打击,华为云数据库提供了多重防护措施:高权限管控华为云RDS配套使用的数据管理服务DAS即将推出企业版,DAS服务企业版对于删库、删表、truncate 这些永久性的物理删除操作,提供了严格的权限管控和控制,至少需要经过业务Owner/DBA/系统管理员三个角色完成审批才可以执行,同时支持通过增量日志解析删除语句,将被删除的数据行快速还原。细粒度权限控制针对删除实例这种高危操作,华为云数据库为企业用户研发了细粒度授权的特性,客户可针对用户和用户组配置细粒度权限策略,将删除数据库的权限控制在有限的高权限账号里面,防止用户的高危操作,保障数据的安全。华为云支持客户免费开启操作保护功能,删除实例的时候会强制执行6位验证码的二次验证,验证短信或邮件只发送给有限的几个手机号码或邮箱。自动备份恢复华为云数据库具备完善的备份恢复机制,732天超长保存,高度保证备份数据的可靠性。如果客户设置了自动备份策略,那么在备份保留周期内,如果只是删除了某些库表,可直接执行库表时间点恢复,将被删除的库表还原到删除前一刻,实现快速的表恢复。华为云RDS还有实例回收站特性,专门针对这种删库跑路的行为,即使包括备份文件在内的整个实例被删除了,在有限的周期内(可配置最长7天时间),也可以从回收站里找回。审计追踪华为云数据库不仅做到事前防护和事后还原,还可以追溯责任人,逐层找到问题根源。华为云RDS有SQL审计日志、支持查询/删除语句的执行用户名、请求来源IP、执行时间等;针对控制台的操作,华为云RDS还对接了云审计服务CTS,管控下发的删除实例的请求也会被审计到。总而言之,云数据库的安全除了依靠云服务商提供的保护能力,如危险操作双因子认证、数据库回收站等,还需要企业设立完整的企业数据库管理规范,严格控制各种角色对应的数据库权限,如权限的三权分立(即数据库管理员、数据库审计员、数据库安全员三权),从制度上预防任何可能的恶意行为。安全服务无小事,任何关及企业服务体验的事都是华为云数据库的头等大事。华为云数据库会持续构筑强硬的技术实力,提供更高安全、高可靠的数据库服务。目前,华为云数据库开年采购活动火热进行中,在迁移专区购买数据库的用户, 使用数据复制服务DRS迁移数据上云后免费赠送6个月时长。在活动页下单数据库的用户均免费赠送数据库安全审计1个月。此外新用户购买云数据库1年3折,2个月仅需10元。华为开发者大会2020(Cloud)是华为面向ICT(信息与通信)领域全球开发者的年度顶级旗舰活动。大会旨在搭建一个全球性的交流和实践平台,开放华为30年积累的ICT技术和能力,以“鲲鹏+昇腾”硬核双引擎,为开发者提供澎湃动力,改变世界,变不可能为可能。我们期待与你共创计算新时代在一起,梦飞扬!
-
复工后想搞个大动作?这个“节流增效锦囊”必须了解一下华为云数据库开年采购季1 新用户空前优惠,云耀云服务器+云数据库爆款CP组合低至2折2 新用户6个月8折购赠送6个月,买1年55折赠送6个月,买3年只需5折赠送6个月3 新用户购买2个月仅需10元,个人开发者福音4 首次购买数据库的用户1年3折,优惠力度之大前所未有5 不限新老用户新购产品5折起,升级续订1年8折6 新品试用,GeminiDB for Cassandra 限时0元体验目前,华为云数据库开年采购活动火热进行中, 活动期间在活动页购买数据库产品(除文档数据库服务DDS以外)的用户,均免费赠送数据库安全审计服务1个月免费使用时长。买管家式的华为云数据库速戳:华为开发者大会2020(Cloud)是华为面向ICT(信息与通信)领域全球开发者的年度顶级旗舰活动。大会旨在搭建一个全球性的交流和实践平台,开放华为30年积累的ICT技术和能力,以“鲲鹏+昇腾”硬核双引擎,为开发者提供澎湃动力,改变世界,变不可能为可能。我们期待与你共创计算新时代在一起,梦飞扬!
-
1 使用GeminiDB for Cassandra流捕获表活动1.1 功能介绍当存储在GeminiDB for Cassandra集群中某张表的某项目发生变更时,其他的程序能够做出相应的变更,比如:一个应用程序更改了GeminiDB for Cassandra集群中的某行数据,另一个应用程序能够读取到这行数据变更并做出相应的动作。GeminiDB for Cassandra支持这种类似的场景。流表捕获原表的变动,并存储24小时之后过期。客户端通过SDK可访问流表并获取数据修改前后的项目数据。GeminiDB for Cassandra流是一种有关表中的项目修改的有序信息流,当启动某张表的流时,GeminiDB for Cassandra流表捕获原表的数据项目的更改信息。当应用程序在表中插入、更新、或者删除某条数据时,流表都会记录一条修改数据的流记录。流记录包含对表中某条数据所做的数据修改的相关信息,包含修改前后的新旧数据记录。原表中修改的每个项目,流表中的记录将按照对应的实际修改的顺序显示。流表会实时的监控原表的记录,包括插入、删除、更新操作,以便能够在其他情况使用,但不包含DDL操作记录;流表使用GeminiDB for Cassandra的物化视图实现,遵循物化视图的相关限制,比如有必须先删除物化视图表之后才能删除原表,对应必须要先删除流表才能删除原表。1.2 使用场景主要用于Cassandra往大数据/ES(Elasticsearch)同步数据变化的场景,支撑客户对应业务开展。1.3 功能特色华为GeminiDB for Cassandra专有能力,原生Cassandra不支持。2 GeminiDB for Cassandra流使用方法概述GeminiDB for Cassandra原表与流表维护两个独立的表。在开启原表的流开关之后,访问原表并且有操作原表数据会记录到对应的流表中,要读取处理流表记录,通过访问流表,访问方式与数据库其他表的访问方式相同,见第四、五章节访问方法。3 开启关闭流启用流的方式:使用alter table KS.TABLE with stream_enabled=true 语句启用流,当前流支持新旧映像。关闭流:使用alter table KS.TABLE with stream_enabled=false 可以随时禁用流。关闭流之后当前流表中的数据不会立即删除,24之后删除,原表中数据的变更不会再记录到流表中。举例:CREATE TABLE ks.table ( id int, name text, addr text,age int,email text,PRIMARY KEY (name, id)); // 创建表Alter TABLE ks.table with stream_enabled=true; // 开启流Desc ks.table; // 查看流表是否创建INSERT INTO ks.table (name , id , addr , age , email ) VALUES ('xiaoxin',31,'beijing1',33,'xiaoxin@163.com'); // 向原表写入数据select * from ks."table$streaming"; // 查看流表是否有相应数据产生Alter TABLE ks.table with stream_enabled=false; // 关闭流表 4 读取和处理流记录应用程序要读取和处理流时,应用程序需要通过SDK连接到C*流表进行相应操作。流表中的每条流记录均代表一个原表中数据的修改,每条流记录都会有一个时间信息,标识这条流产生的时间信息。每条流记录会在24小时后自动删除。流表结构:CREATE TABLE ks.table$streaming ( @shardID text, @eventID timeuuid, pk, ck, @newOldImage boolean, @eventName text, co1, co2, PRIMARY KEY (@shardID, @eventID, pk, ck, @newOldImage) //pk,ck,为原表的pk,ck, co1,co2是原表的普通列);如上,流表中包含几个特殊的字段:"@shardID"是分区键;"@eventID"是由插入时间生成的timeuuid,代表流数据产生的时间;"@newOldImage"代表新旧映像,0表示旧映像,1表示新映像;"@eventName"代表操作事件如"insert"、"update"、"delete"。迭代处理流表的数据时请使用流表的分区加上时间戳范围访问。查询分区时使用,返回分区列表:select stream_shards from system_schema.tables where keyspace_name='ks' and table_name='table';例如:cqlsh:ks> select stream_shards from system_schema.tables where keyspace_name='ks' and table_name='table1'; stream_shards-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ['-9223372036854775808', '-6148914691236517206', '-4611686018427387905', '-3843071682022823258', '-1537228672809129303', '-2', '1537228672809129299', '4611686018427387901', '5270498306774157603', '6148914691236517202', '7686143364045646492', '7686143364045646503'] (1 rows)使用分区+时间遍历流表数据,范围查询时使用"@eventID"时间查询,每次默认返回的大小根据数据量大小决定,下次迭代使用时间继续往后迭代。例如:select * From ks."table$streaming" where "@shardID" = '-9223372036854775808' and "@eventID" > a64a8340-e999-11e9-a7bd-cb5f001f61df limit 50;select * From ks."table$streaming" where "@shardID" in ('-9223372036854775808', '-6148914691236517206', '-4611686018427387905', '-3843071682022823258', '-1537228672809129303', '-2', '1537228672809129299', '4611686018427387901', '5270498306774157603', '6148914691236517202', '7686143364045646492', '7686143364045646503') limit 50;5 接口说明5.1 GetShardIteratorpublic static List<String> GetShardIterator(Cluster cluster, String keySpace, String tableName)功能: 获取流表的shard信息入参:Cluster cluster:集群的cluster信息,连接数据库使用String keySpace:要查询流数据的数据库名称String tableName:要查询流数据的表名称出参: 返回List<String> 一组shard集合,GetRecords接口中使用5.2 GetRecordspublic static StreamInfo GetRecords(Cluster cluster, String keySpace, TableEvent tableEvent)功能: 获取流表的具体数据入参:Cluster cluster:集群的cluster信息,连接数据库使用String keySpace:要查询流数据的数据库名称TableEvent tableEvent:要查询流数据相关信息,TableEvent结构如下: String table:要查询流数据的表名称String shardID:要查询流数据的shardIDString eventID:要查询流数据的时间戳信息int limitRow:要查询流数据的限制条数,没有指定情况下默认是100;出参:返回一组StreamInfo数据;具体结构如下: String shardID:流数据的shardIDString table:流数据的原表名List<RowInfo> columns:一组流数据的集合,RowInfo具体结构如下:String eventID:流数据的时间戳信息String operateType:操作类型,例如: INSERT、UPDATE、DELETEList<DataItem> Keys: 流数据对应的原表的主键信息List<DataItem> NewImage: 新映像的信息List<DataItem> OldImage: 旧映像的信息5.3 GetShardIteratorpublic static List<String> GetShardIterator(Session session, String keySpace, String tableName)功能: 获取流表的shard信息入参:Session session:数据库集群的连接session,调用函数之后session需要调用者关闭String keySpace:要查询流数据的数据库名称String tableName:要查询流数据的表名称出参: 返回List<String> 一组shard集合,GetRecords接口中使用5.4 GetRecordspublic static StreamInfo GetRecords(Session session, String keySpace, TableEvent tableEvent)功能: 获取流表的具体数据入参:Session session:数据库集群的连接session,调用函数之后session需要调用者关闭;String keySpace:要查询流数据的数据库名称;TableEvent tableEvent:要查询流数据相关信息,TableEvent结构如下: String table:要查询流数据的表名称;String shardID:要查询流数据的shardID;String eventID:要查询流数据的时间戳信息;int limitRow:要查询流数据的限制条数,没有指定情况下默认是100;List<ColumnMetadata> primaryKey: 要查询流数据的表的主键名称类型信息出参:返回一组StreamInfo数据;具体结构如下: String shardID:流数据的shardIDString table:流数据的原表名List<RowInfo> columns:一组流数据的集合,RowInfo具体结构如下:String eventID:流数据的时间戳信息String operateType:操作类型,例如: INSERT、UPDATE、DELETEList<DataItem> Keys: 流数据对应的原表的主键信息List<DataItem> NewImage: 新映像的信息List<DataItem> OldImage: 旧映像的信息5.5 GetRecords返回结果范例{ "ShardID": "-4611686018427387905", "Table": "tb1", "Records": [{ "EventID": "52236080-efb5-11e9-9c62-49626763b3dc", "OperateType": "INSERT", "Keys": [{ "columnName": "name", "value": "zhoujielun", "type": "varchar" }, { "columnName": "id", "value": 31, "type": "int" }], "NewImage": [{ "columnName": "name", "value": "zhoujielun", "type": "varchar" }, { "columnName": "id", "value": 31, "type": "int" }, { "columnName": "addr", "value": "宇宙中心", "type": "varchar" }, { "columnName": "age", "value": 33, "type": "int" }, { "columnName": "email", "value": "zhoujielun.com", "type": "varchar" }], "OldImage": [] }, { "EventID": "52255c50-efb5-11e9-9c62-49626763b3dc", "OperateType": "UPDATE", "Keys": [{ "columnName": "name", "value": "zhoujielun", "type": "varchar" }, { "columnName": "id", "value": 32, "type": "int" }], "NewImage": [{ "columnName": "name", "value": "zhoujielun", "type": "varchar" }, { "columnName": "id", "value": 32, "type": "int" }, { "columnName": "addr", "value": "宇宙中心", "type": "varchar" }, { "columnName": "age", "value": 33, "type": "int" }, { "columnName": "email", "value": "zhoujielun.com", "type": "varchar" }], "OldImage": [{ "columnName": "name", "value": "zhoujielun", "type": "varchar" }, { "columnName": "id", "value": 32, "type": "int" }, { "columnName": "addr", "value": "宇宙中心", "type": "varchar" }, { "columnName": "age", "value": 33, "type": "int" }, { "columnName": "email", "value": "zhoujielun.com", "type": "varchar" }] }, { "EventID": "52261fa0-efb5-11e9-9c62-49626763b3dc", "OperateType": "UPDATE", "Keys": [{ "columnName": "name", "value": "zhoujielun", "type": "varchar" }, { "columnName": "id", "value": 33, "type": "int" }], "NewImage": [{ "columnName": "name", "value": "zhoujielun", "type": "varchar" }, { "columnName": "id", "value": 33, "type": "int" }, { "columnName": "addr", "value": "宇宙中心", "type": "varchar" }, { "columnName": "age", "value": 33, "type": "int" }, { "columnName": "email", "value": "zhoujielun.com", "type": "varchar" }], "OldImage": [{ "columnName": "name", "value": "zhoujielun", "type": "varchar" }, { "columnName": "id", "value": 33, "type": "int" }, { "columnName": "addr", "value": "宇宙中心", "type": "varchar" }, { "columnName": "age", "value": 33, "type": "int" }, { "columnName": "email", "value": "zhoujielun.com", "type": "varchar" }] }]} 5.6 接口使用demo1package com.huawei.hwcloud.stream; import com.datastax.driver.core.Cluster; import com.datastax.driver.core.ColumnMetadata; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.huawei.hwcloud.stream.req.RowInfo; import com.huawei.hwcloud.stream.req.StreamInfo; import com.huawei.hwcloud.stream.req.TableEvent; import java.util.List; public class Main { public static void main(String[] args) { Cluster cluster = Cluster.builder().addContactPoint("xxx.95.xxx.201").withPort(9042).build(); // Cluster cluster = Cluster.builder().addContactPoint(endpoint).withPort(port).withCredentials(username, password).build(); List<ColumnMetadata> pm = cluster.getMetadata().getKeyspace("test").getTable("tb1").getPrimaryKey(); System.out.println(pm); List streamShards = null; try { streamShards = StreamFetcher.GetShardIterator(cluster, "test", "tb1"); } catch (Exception e) { e.printStackTrace(); } System.out.println(streamShards); TableEvent tableEvent = new TableEvent(); tableEvent.setEventID("43e0eeb0-ee80-11e9-9c62-49626763b3dc"); tableEvent.setShardID("-4611686018427387905"); tableEvent.setTable("tb1"); tableEvent.setLimitRow(6); StreamInfo streamInfo = null; try { streamInfo = StreamFetcher.GetRecords(cluster, "test", tableEvent); } catch (Exception e) { e.printStackTrace(); } Gson gson = new GsonBuilder().create(); String line = gson.toJson(streamInfo); System.out.println(line); System.out.println(streamInfo.getColumns().size()); for (RowInfo rowInfo: streamInfo.getColumns()) { System.out.println(rowInfo.toString()); } System.exit(0); } } 5.7 接口使用demo2package com.huawei.hwcloud.stream; import com.datastax.driver.core.Cluster; import com.datastax.driver.core.ColumnMetadata; import com.datastax.driver.core.Session; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.huawei.hwcloud.stream.req.RowInfo; import com.huawei.hwcloud.stream.req.StreamInfo; import com.huawei.hwcloud.stream.req.TableEvent; import com.huawei.hwcloud.stream.utils.WrapperCassandraSession; import java.util.List; public class Main2 { public static void main(String[] args) { Cluster cluster = Cluster.builder().addContactPoint("XXX.95.XXX.201").withPort(9042).build(); // Cluster cluster = Cluster.builder().addContactPoint(endpoint).withPort(port).withCredentials(username, password).build(); List<ColumnMetadata> pk = cluster.getMetadata().getKeyspace("test").getTable("tb1").getPrimaryKey(); System.out.println(pk); Session session = cluster.connect(); List<String> streamShards = StreamFetcher.GetShardIterator(session, "test", "tb1"); System.out.println(streamShards); TableEvent tableEvent = new TableEvent(); tableEvent.setEventID("43e0eeb0-ee80-11e9-9c62-49626763b3dc"); tableEvent.setShardID("-4611686018427387905"); tableEvent.setTable("tb1"); tableEvent.setLimitRow(6); tableEvent.setPrimaryKey(pk); StreamInfo streamInfo = StreamFetcher.GetRecords(session, "test", tableEvent); Gson gson = new GsonBuilder().create(); String line = gson.toJson(streamInfo); System.out.println(line); System.out.println(streamInfo.getColumns().size()); for (RowInfo rowInfo: streamInfo.getColumns()) { System.out.println(rowInfo.toString()); } session.close(); System.exit(0); } } 6 功能约束流表中的数据保留24小时。流表中的数据会占用数据库的磁盘空间。通过CQL语句不能创建带有"$streaming"后缀的流表。流表可以通过drop MATERIALIZED VIEW ks."table$streaming";进行删除,流表使用物化视图实现,遵从物化视图的限制要求。
geminidb_fans
发表于2020-02-25 19:14:13
2020-02-25 19:14:13
最后回复
geminidb_fans
2020-02-25 19:14:13
4514 0 -
1 使用GeminiDB for Cassandra流捕获表活动1.1 功能介绍当存储在GeminiDB for Cassandra集群中某张表的某项目发生变更时,其他的程序能够做出相应的变更,比如:一个应用程序更改了GeminiDB for Cassandra集群中的某行数据,另一个应用程序能够读取到这行数据变更并做出相应的动作。GeminiDB for Cassandra支持这种类似的场景。流表捕获原表的变动,并存储24小时之后过期。客户端通过SDK可访问流表并获取数据修改前后的项目数据。GeminiDB for Cassandra流是一种有关表中的项目修改的有序信息流,当启动某张表的流时,GeminiDB for Cassandra流表捕获原表的数据项目的更改信息。当应用程序在表中插入、更新、或者删除某条数据时,流表都会记录一条修改数据的流记录。流记录包含对表中某条数据所做的数据修改的相关信息,包含修改前后的新旧数据记录。原表中修改的每个项目,流表中的记录将按照对应的实际修改的顺序显示。流表会实时的监控原表的记录,包括插入、删除、更新操作,以便能够在其他情况使用,但不包含DDL操作记录;流表使用GeminiDB for Cassandra的物化视图实现,遵循物化视图的相关限制,比如有必须先删除物化视图表之后才能删除原表,对应必须要先删除流表才能删除原表。1.2 使用场景主要用于Cassandra往大数据平台/ES(Elasticsearch)同步数据变化的场景,支撑客户对应业务开展。1.3 功能特色华为GeminiDB for Cassandra专有能力,原生Cassandra不支持。2 GeminiDB for Cassandra流使用方法概述GeminiDB for Cassandra原表与流表维护两个独立的表。在开启原表的流开关之后,访问原表并且有操作原表数据会记录到对应的流表中,要读取处理流表记录,通过访问流表,访问方式与数据库其他表的访问方式相同,见第四、五章节访问方法。3 开启关闭流启用流的方式:使用alter table KS.TABLE with stream_enabled=true 语句启用流,当前流支持新旧映像。关闭流:使用alter table KS.TABLE with stream_enabled=false 可以随时禁用流。关闭流之后当前流表中的数据不会立即删除,24之后删除,原表中数据的变更不会再记录到流表中。举例:CREATE TABLE ks.table ( id int, name text, addr text,age int,email text,PRIMARY KEY (name, id)); // 创建表Alter TABLE ks.table with stream_enabled=true; // 开启流Desc ks.table; // 查看流表是否创建INSERT INTO ks.table (name , id , addr , age , email ) VALUES ('xiaoxin',31,'beijing1',33,'xiaoxin@163.com'); // 向原表写入数据select * from ks."table$streaming"; // 查看流表是否有相应数据产生Alter TABLE ks.table with stream_enabled=false; // 关闭流表 4 读取和处理流记录应用程序要读取和处理流时,应用程序需要通过SDK连接到C*流表进行相应操作。流表中的每条流记录均代表一个原表中数据的修改,每条流记录都会有一个时间信息,标识这条流产生的时间信息。每条流记录会在24小时后自动删除。流表结构:CREATE TABLE ks.table$streaming ( @shardID text, @eventID timeuuid, pk, ck, @newOldImage boolean, @eventName text, co1, co2, PRIMARY KEY (@shardID, @eventID, pk, ck, @newOldImage) //pk,ck,为原表的pk,ck, co1,co2是原表的普通列);如上,流表中包含几个特殊的字段:"@shardID"是分区键;"@eventID"是由插入时间生成的timeuuid,代表流数据产生的时间;"@newOldImage"代表新旧映像,0表示旧映像,1表示新映像;"@eventName"代表操作事件如"insert"、"update"、"delete"。迭代处理流表的数据时请使用流表的分区加上时间戳范围访问。查询分区时使用,返回分区列表:select stream_shards from system_schema.tables where keyspace_name='ks' and table_name='table';例如:cqlsh:ks> select stream_shards from system_schema.tables where keyspace_name='ks' and table_name='table1'; stream_shards-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ['-9223372036854775808', '-6148914691236517206', '-4611686018427387905', '-3843071682022823258', '-1537228672809129303', '-2', '1537228672809129299', '4611686018427387901', '5270498306774157603', '6148914691236517202', '7686143364045646492', '7686143364045646503'] (1 rows)使用分区+时间遍历流表数据,范围查询时使用"@eventID"时间查询,每次默认返回的大小根据数据量大小决定,下次迭代使用时间继续往后迭代。例如:select * From ks."table$streaming" where "@shardID" = '-9223372036854775808' and "@eventID" > a64a8340-e999-11e9-a7bd-cb5f001f61df limit 50;5 接口说明5.1 GetShardIteratorpublic static List<String> GetShardIterator(Cluster cluster, String keySpace, String tableName)功能: 获取流表的shard信息入参:Cluster cluster:集群的cluster信息,连接数据库使用String keySpace:要查询流数据的数据库名称String tableName:要查询流数据的表名称出参: 返回List<String> 一组shard集合,GetRecords接口中使用5.2 GetRecordspublic static StreamInfo GetRecords(Cluster cluster, String keySpace, TableEvent tableEvent)功能: 获取流表的具体数据入参:Cluster cluster:集群的cluster信息,连接数据库使用String keySpace:要查询流数据的数据库名称TableEvent tableEvent:要查询流数据相关信息,TableEvent结构如下: String table:要查询流数据的表名称String shardID:要查询流数据的shardIDString eventID:要查询流数据的时间戳信息int limitRow:要查询流数据的限制条数,没有指定情况下默认是100;出参:返回一组StreamInfo数据;具体结构如下: String shardID:流数据的shardIDString table:流数据的原表名List<RowInfo> columns:一组流数据的集合,RowInfo具体结构如下:String eventID:流数据的时间戳信息String operateType:操作类型,例如: INSERT、UPDATE、DELETEList<DataItem> Keys: 流数据对应的原表的主键信息List<DataItem> NewImage: 新映像的信息List<DataItem> OldImage: 旧映像的信息5.3 GetShardIteratorpublic static List<String> GetShardIterator(Session session, String keySpace, String tableName)功能: 获取流表的shard信息入参:Session session:数据库集群的连接session,调用函数之后session需要调用者关闭String keySpace:要查询流数据的数据库名称String tableName:要查询流数据的表名称出参: 返回List<String> 一组shard集合,GetRecords接口中使用5.4 GetRecordspublic static StreamInfo GetRecords(Session session, String keySpace, TableEvent tableEvent)功能: 获取流表的具体数据入参:Session session:数据库集群的连接session,调用函数之后session需要调用者关闭;String keySpace:要查询流数据的数据库名称;TableEvent tableEvent:要查询流数据相关信息,TableEvent结构如下: String table:要查询流数据的表名称;String shardID:要查询流数据的shardID;String eventID:要查询流数据的时间戳信息;int limitRow:要查询流数据的限制条数,没有指定情况下默认是100;List<ColumnMetadata> primaryKey: 要查询流数据的表的主键名称类型信息出参:返回一组StreamInfo数据;具体结构如下: String shardID:流数据的shardIDString table:流数据的原表名List<RowInfo> columns:一组流数据的集合,RowInfo具体结构如下:String eventID:流数据的时间戳信息String operateType:操作类型,例如: INSERT、UPDATE、DELETEList<DataItem> Keys: 流数据对应的原表的主键信息List<DataItem> NewImage: 新映像的信息List<DataItem> OldImage: 旧映像的信息5.5 GetRecords返回结果范例{ "ShardID": "-4611686018427387905", "Table": "tb1", "Records": [{ "EventID": "52236080-efb5-11e9-9c62-49626763b3dc", "OperateType": "INSERT", "Keys": [{ "columnName": "name", "value": "zhoujielun", "type": "varchar" }, { "columnName": "id", "value": 31, "type": "int" }], "NewImage": [{ "columnName": "name", "value": "zhoujielun", "type": "varchar" }, { "columnName": "id", "value": 31, "type": "int" }, { "columnName": "addr", "value": "宇宙中心", "type": "varchar" }, { "columnName": "age", "value": 33, "type": "int" }, { "columnName": "email", "value": "zhoujielun.com", "type": "varchar" }], "OldImage": [] }, { "EventID": "52255c50-efb5-11e9-9c62-49626763b3dc", "OperateType": "UPDATE", "Keys": [{ "columnName": "name", "value": "zhoujielun", "type": "varchar" }, { "columnName": "id", "value": 32, "type": "int" }], "NewImage": [{ "columnName": "name", "value": "zhoujielun", "type": "varchar" }, { "columnName": "id", "value": 32, "type": "int" }, { "columnName": "addr", "value": "宇宙中心", "type": "varchar" }, { "columnName": "age", "value": 33, "type": "int" }, { "columnName": "email", "value": "zhoujielun.com", "type": "varchar" }], "OldImage": [{ "columnName": "name", "value": "zhoujielun", "type": "varchar" }, { "columnName": "id", "value": 32, "type": "int" }, { "columnName": "addr", "value": "宇宙中心", "type": "varchar" }, { "columnName": "age", "value": 33, "type": "int" }, { "columnName": "email", "value": "zhoujielun.com", "type": "varchar" }] }, { "EventID": "52261fa0-efb5-11e9-9c62-49626763b3dc", "OperateType": "UPDATE", "Keys": [{ "columnName": "name", "value": "zhoujielun", "type": "varchar" }, { "columnName": "id", "value": 33, "type": "int" }], "NewImage": [{ "columnName": "name", "value": "zhoujielun", "type": "varchar" }, { "columnName": "id", "value": 33, "type": "int" }, { "columnName": "addr", "value": "宇宙中心", "type": "varchar" }, { "columnName": "age", "value": 33, "type": "int" }, { "columnName": "email", "value": "zhoujielun.com", "type": "varchar" }], "OldImage": [{ "columnName": "name", "value": "zhoujielun", "type": "varchar" }, { "columnName": "id", "value": 33, "type": "int" }, { "columnName": "addr", "value": "宇宙中心", "type": "varchar" }, { "columnName": "age", "value": 33, "type": "int" }, { "columnName": "email", "value": "zhoujielun.com", "type": "varchar" }] }]} 5.6 接口使用demo1package com.huawei.hwcloud.stream; import com.datastax.driver.core.Cluster; import com.datastax.driver.core.ColumnMetadata; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.huawei.hwcloud.stream.req.RowInfo; import com.huawei.hwcloud.stream.req.StreamInfo; import com.huawei.hwcloud.stream.req.TableEvent; import java.util.List; public class Main { public static void main(String[] args) { Cluster cluster = Cluster.builder().addContactPoint("xxx.95.xxx.201").withPort(9042).build(); // Cluster cluster = Cluster.builder().addContactPoint(endpoint).withPort(port).withCredentials(username, password).build(); List<ColumnMetadata> pm = cluster.getMetadata().getKeyspace("test").getTable("tb1").getPrimaryKey(); System.out.println(pm); List streamShards = null; try { streamShards = StreamFetcher.GetShardIterator(cluster, "test", "tb1"); } catch (Exception e) { e.printStackTrace(); } System.out.println(streamShards); TableEvent tableEvent = new TableEvent(); tableEvent.setEventID("43e0eeb0-ee80-11e9-9c62-49626763b3dc"); tableEvent.setShardID("-4611686018427387905"); tableEvent.setTable("tb1"); tableEvent.setLimitRow(6); StreamInfo streamInfo = null; try { streamInfo = StreamFetcher.GetRecords(cluster, "test", tableEvent); } catch (Exception e) { e.printStackTrace(); } Gson gson = new GsonBuilder().create(); String line = gson.toJson(streamInfo); System.out.println(line); System.out.println(streamInfo.getColumns().size()); for (RowInfo rowInfo: streamInfo.getColumns()) { System.out.println(rowInfo.toString()); } System.exit(0); } } 5.7 接口使用demo2package com.huawei.hwcloud.stream; import com.datastax.driver.core.Cluster; import com.datastax.driver.core.ColumnMetadata; import com.datastax.driver.core.Session; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.huawei.hwcloud.stream.req.RowInfo; import com.huawei.hwcloud.stream.req.StreamInfo; import com.huawei.hwcloud.stream.req.TableEvent; import com.huawei.hwcloud.stream.utils.WrapperCassandraSession; import java.util.List; public class Main2 { public static void main(String[] args) { Cluster cluster = Cluster.builder().addContactPoint("XXX.95.XXX.201").withPort(9042).build(); // Cluster cluster = Cluster.builder().addContactPoint(endpoint).withPort(port).withCredentials(username, password).build(); List<ColumnMetadata> pk = cluster.getMetadata().getKeyspace("test").getTable("tb1").getPrimaryKey(); System.out.println(pk); Session session = cluster.connect(); List<String> streamShards = StreamFetcher.GetShardIterator(session, "test", "tb1"); System.out.println(streamShards); TableEvent tableEvent = new TableEvent(); tableEvent.setEventID("43e0eeb0-ee80-11e9-9c62-49626763b3dc"); tableEvent.setShardID("-4611686018427387905"); tableEvent.setTable("tb1"); tableEvent.setLimitRow(6); tableEvent.setPrimaryKey(pk); StreamInfo streamInfo = StreamFetcher.GetRecords(session, "test", tableEvent); Gson gson = new GsonBuilder().create(); String line = gson.toJson(streamInfo); System.out.println(line); System.out.println(streamInfo.getColumns().size()); for (RowInfo rowInfo: streamInfo.getColumns()) { System.out.println(rowInfo.toString()); } session.close(); System.exit(0); } } 6 功能约束流表中的数据保留24小时。流表中的数据会占用数据库的磁盘空间。通过CQL语句不能创建带有"$streaming"后缀的流表。流表可以通过drop MATERIALIZED VIEW ks."table$streaming";进行删除,流表使用物化视图实现,遵从物化视图的限制要求。
geminidb_fans
发表于2020-02-25 19:08:33
2020-02-25 19:08:33
最后回复
geminidb_fans
2020-02-25 19:08:33
4230 0 -
本期小云妹给大家介绍个数据库的新成员——云数据库GaussDB NoSQL云数据库GaussDB(for Cassandra)介绍页入口:https://www.huaweicloud.com/product/gaussdbforcassandra.html云数据库GaussDB(for Mongo) 介绍页入口:https://www.huaweicloud.com/product/gaussdbformongo.html云数据库GaussDB NoSQL成长地图入口:https://support.huaweicloud.com/nosql/index.html
上滑加载中
推荐直播
-
华为云码道Agent集成与鸿蒙实战2026/08/11 周二 19:00-21:00
王一男-华为云码道产品规划专家;李炎-华为云码道产品专家;彭江敏-华为云鸿蒙端云一体化开发专家
本次直播带你解读华为云码道7月份产品新特性、新功能。更有专家演示码道Agent Space × 钉钉机器集成实战,从0到1打通消息通道;码道鸿蒙端云一体化实战,快速搭建员工签到系统。
回顾中 -
华为云开发者AI素养直播课·第五期2026/09/04 周五 16:00-18:00
林华鼎-华为云AI开发者运营负责人;蒋春阳-华为云AI开发者案例开发专家
本期直播内容: AI工具体验营 · 第5-8课连讲。Agent-Team 多智能体协作完成毕业设计实践
回顾中 -
华为云开发者AI素养ClassRoom·第六期2026/09/08 周二 19:00-20:00
樊渊-2026华为软件挑战赛冠军
高手来了:看软挑高手解析二维排样问题—从工业难题到算法突破
回顾中
热门标签