Azure Cosmos DB 是 Microsoft 提供的全球分布式多模型数据库服务。Cosmos DB是一种NoSql数据库,但是它兼容多种API。...凭借 Cosmos DB,还可以随时向 Cosmos 帐户添加或删除任何 Azure 区域,只需单击一个按钮即可。...凭借其新颖的多主数据库复制协议、免闩锁及优化了写入的数据库引擎,,Cosmos DB 可保证全球任意位置第 99 个百分位的读取(已编入索引)和写入延迟均低于 10 毫秒。...无需架构或索引管理 对于全球分布式应用来说,让数据库架构和索引与应用程序架构保持同步尤其不便。 借助 Cosmos DB,则无需处理架构或索引管理。 数据库引擎完全与架构无关。...由于不需要架构和索引管理,因此迁移架构时也不必担心应用程序停用时间。 Cosmos DB 自动为所有数据编制索引,并可快速提供查询服务。
微软Build 2017发布的Cosmos数据库比较有意思,同时支持5个级别一致性。 ?...最常见的两种模式是强制一致性(Strong consistency)与最终一致性(EventuallyConsistency),但Azure Cosmos DB额外提供了介于上述两者之间的 有边界一致性...Cosmos DB在许多方面借鉴了DocumentDB,这不足为奇。其中一个方面就是拥有可调整的一致性模型(consistency model)。...比如说,对于Cosmos DB(以及之前的DocumentDB)而言,那意味着,你可以选择这种一致性模型:允许读取操作比写入操作只延后某一段时间(毫秒级),也可以选择这种一致性模型:专注于为某种特定的客户会话提供一致性...回滚实际上是一个比较高层抽象的概念,大多数DB在实现事务时,是在事务操作的数据快照上进行的(比如,MVCC),并不修改实际的数据,如果有错并不会提交,所以很自然的支持回滚。
原文:Azure Tips and Tricks 翻译:汪宇杰 在Cosmos DB中使用数据迁移工具 有一项重复的任务是将数据从一种数据库格式迁移到另一种数据库格式。...我最近使用Cosmos DB作为数据库来存储Ignite大会发出的所有推文。然而一旦获得了数据并且不再使用Cosmos DB进行该操作,我就需要将数据转储到本地文件中保存并节省开销。...工具 下载并安装 Azure DocumentDB Data Migration Tool https://aka.ms/csdmtool 开工 首先确保已创建要迁移的Cosmos DB数据库和集合。...在 Cosmos DB 管理页面中打开 Keys,并复制 Primary Connection String ? 将数据库名称附加到字符串的末尾。
作者 | Renato Losio 译者 | 平川 策划 | Tina 最近,微软详细介绍了分布式 PostgreSQL 基准测试的结果,比较了 Azure Cosmos DB for PostgreSQL...这几种数据库在实现时做了不同的权衡,测试结果显示,Azure Cosmos DB 的吞吐量更高。同时,他还着重指出了针对分布式数据库进行基准测试所面临的挑战。...根据 GigaOm 基准测试,在事务性能和价格方面,采用 Citus 分布式表的 Azure Cosmos DB for PostgreSQL 优于 CockroachDB Dedicated 和 Yugabyte...微软首席软件工程师 Marco Slot 写道: GigaOM 使用 HammerDB TPROC-C 对 Azure Cosmos DB for PostgreSQL 和两个类似的托管服务产品(…)进行了基准测试...为了鼓励客户运行与其工作负载相匹配的基准测试,微软共享了辅助脚本,以便他们可以在 Azure Cosmos DB 上运行 HammerDB 基准测试。
从图中可以获取到的信息有: 无论是在 native 图数据库 还是复合型图数据库,Neo4j 均取得了一枝独秀的成绩; 微软 Azure 的 Cosmos DB 的增长速度非常非常非常迅猛; ArangoDB...Microsoft Azure Cosmos DB Cosmos DB是微软2010年立项,经过7年研发,于2017年5月正式发布的云数据库服务,该数据库服务支持图数据、列存储、键值存储和文档数据库等多种数据模型...而微软则恰好相反, Cosmos DB采取一刀切的方式,号称可以适用一切通用型数据库。 微软的Cosmos DB的天才之处在于开发人员可能希望在混合持久化方面鱼与熊掌兼得。...Cosmos DB 的优势: 全球部部署 多数据模型+API 提供了五种数据一致性(参考这里) 弹性存储拓展 … Amazon Neptune 2017年11月底,亚马逊在 AWS 2017全球峰会发布了全新的图数据库产品...总结 几点总结: 多存储模式的图数据库技术是目前发展的一个主要趋势,从 Azure Cosmos DB 的发展可以看到(毕竟数据迁移的成本太高); 以 JenusGraph 为代表的 NoSQL 存储的分布式图数据日渐火热
♣ 题目部分 在Oracle中,降序索引和升序索引分别是什么? ♣ 答案部分 对于升序索引(Ascending Indexes),数据库按升序排列的顺序存储数据。索引默认按照升序存储列值。...降序索引(Descending Indexes)将存储在一个特定的列或多列中的数据按降序排序。...创建降序索引时使用DESC关键字,如下所示: CREATE INDEX IND_DESC ON TESTDESC(A DESC,B ASC); 需要注意的是,降序索引在DBA_INDEXES的INDEX_TYPE...列表现为FUNCTION-BASED即函数索引,但是在DBA_IND_EXPRESSIONS不能体现其升序或降序,只能通过视图DBA_IND_COLUMNS的DESCEND列来查询,如下所示: 先创建表和索引...--------------------------------------------------------- 0 recursive calls 0 db
♣ 题目部分 在Oracle中,单列索引和复合索引分别是什么? ♣ 答案部分 按照索引列的个数,索引可以分为单列索引和复合索引。单列索引是基于单个列所建立的索引。...复合索引(Composite Indexes),也称为连接索引、组合索引或多列索引,是在某个表中的多个列上建立的索引。复合索引中的列应该以在检索数据的查询中最有意义的顺序出现,但在表中不必是相邻的。...复合索引适合于单列条件查询返回多、组合条件查询返回少的场景。需要注意的是,创建复合索引可以消除索引回表读的操作,所以,在很多情况下,DBA通过创建复合索引来提高查询SQL的性能。...在同一个表的相同列上可以创建多个复合索引,只要其索引列具有不同的排列顺序即可。在某些情况下,例如,若前导列的基数很低,则数据库可能使用索引跳跃扫描。...在Oracle中,可以使用视图DBA_IND_COLUMNS来查询复合索引的索引列。
Cosmos DB 微软的 Azure Cosmos DB 提供了多种可调优特性,是一种高度灵活的解决方案,可通过调整适合多类用例。我们认为 Cosmos DB 也是 NewSQL 数据库。...Cosmos DB 是一种分布于全球的 多模型数据库 服务。作为多模型服务,它的底层存储模型支持键值、列存储、文档和图数据库,并支持通过 SQL 和 NoSQL API 提供数据。...Cosmos DB 在设计上考虑了降低数据库管理的代价。它无需开发人员操心索引或模式管理,自动维护索引以确保性能。...Cosmos DB 提供多个一致性层级,支持开发人员在确定所需的适用 SLA 上做出权衡。除了两种极端的强一致性情况和最终一致性之外,Cosmos DB 还一并提供了另外五个良好定义的一致性层级。...作为微软这样的技术和云巨头所提供的产品,Cosmos DB 易于开发人员使用,对性能、可用性和一致性提供了全面的保证。
♣ 题目部分 在Oracle中,位图索引是什么? ♣ 答案部分 位图索引(Bitmap Indexes)是一种使用位图的特殊数据库索引。它针对大量相同值的列而创建,例如:类别、型号等。...在位图索引中,数据库为每个索引键存储一个位图。在传统的B-Tree索引中,一个索引条目指向单个行,但是在位图索引中,每个索引键存储指向多个行的指针。...由于位图索引本身存储特性的限制,所以,在重复率较低的列或需要经常更新的列上是不适合建立位图索引的。另外,位图索引更新列更容易引起死锁。...⑧ 在同一列上建立位图索引后就不能再建立普通索引了,但是可以建立函数索引,位图索引可以和函数索引同时建立。 ⑨ 做UPDATE代价非常高。 ⑩ 基于规则的优化器不会考虑位图索引。...⑪ 当执行ALTER TABLE语句并修改包含有位图索引的列时,会使位图索引失效。 ⑫ 位图索引不包含任何列数据,并且不能用于任何类型的完整性检查。 ⑬ 位图索引不能被声明为唯一索引。
♣ 题目部分 在Oracle中,压缩索引是什么? ♣ 答案部分 Oracle数据库可以使用键压缩(Key Compression)来压缩B-Tree索引或索引组织表中的主键列值的部分。...键压缩可以大大减少索引所使用的空间,使用了键压缩的索引称为压缩索引。对索引进行压缩更多的意义在于节省存储空间,减少I/O时间。...可以使用如下的SQL将索引重建为压缩或非压缩的索引: ALTER INDEX EMPLOYEE_LAST_NAME_IDX REBUILD NOCOMPRESS;--非压缩 ALTER INDEX EMPLOYEE_LAST_NAME_IDX...REBUILD COMPRESS;--压缩 所有的压缩索引可以通过如下的SQL语句获取: SELECT * FROM DBA_INDEXES D WHERE D.COMPRESSION='ENABLED
♣ 题目部分 在Oracle中,什么是索引分裂? ♣ 答案部分 索引分裂(Index Block Split),就是索引块的分裂。...当一次DML操作修改了索引块上的数据,但是旧有的索引块没有足够的空间去容纳新修改的数据时,将分裂出一个新的索引块,旧有块的部分数据放到新开辟的索引块上去,这个过程就称为索引块的分裂,简称索引分裂。...如果此时其它会话也要修改这个索引块的数据,那么将会出现索引块的竞争,等待以“enq: TX – index contention”的形式体现,该事件是一个与索引分裂直接相关的等待事件。...(2)按照分裂数据块比例分: l 9-1分裂:当事务向索引的最右侧的叶节点上插入一条大于或等于现有索引块上最大值的数据,且该索引块上不存在其它未提交的事务,如果没有足够的空间,那么就会发生9-1分裂。...REBUILD ONLINE REVERSE; 在发生索引分裂等待的时候,也可以根据需要将索引改造为分区索引。通过HASH将索引分成一个一个小块,这样竞争就不会聚集在最右边的节点上。
♣ 答案部分 在Oracle中,有一类特殊的索引,称为函数索引(Function-Based Indexes,FBI),它基于对表中列进行计算后的结果创建索引。...函数索引在不修改应用程序的逻辑基础上提高了查询性能。如果没有函数索引,那么任何在列上执行了函数的查询都不能使用这个列的索引。当在查询中包含该函数时,数据库才会使用该函数索引。...函数索引可以是一个B-Tree索引或位图索引。 用于生成索引的函数可以是算术表达式,也可以是一个包含SQL函数、用户定义PL/SQL函数、包函数,或C调用的表达式。...对于函数索引的索引列的函数查询可以通过视图DBA_IND_EXPRESSIONS来实现,通过如下的SQL语句可以查询所有的函数索引: SELECT * FROM DBA_INDEXES D WHERE...② 如果被函数索引所引用的用户自定义PL/SQL函数失效了或该函数索引的属主没有了在函数索引里面使用的函数的执行权限,那么对这张表上的执行的所有的操作(例如SELECT查询、DML等)也将失败(会报错:
♣ 题目部分 在Oracle中,索引是否必须定期重建?索引重建有哪些影响? ♣ 答案部分 一般而言,极少需要重建B树索引,基本原因是B树索引很大程度上可以自我管理或自我平衡。...认为需要重建索引的最常见理由有: l B-Tree索引随着时间的推移变得不平衡(错误的认识); l 索引碎片在不断增加,但是这些碎片会被重用; l 索引不断增加,删除的空间没有重复使用(错误的认识);...重建索引后,它将连接的更为紧凑;但是,随着对表不断执行DML操作,必须再次分割索引,直到索引达到平衡为止。...因此,通常最好是让索引处于自然平衡和(或)至少要防止定期重建索引。 (3)通常是优先考虑索引合并(INDEX COALESCE),而不是重建索引。索引合并有如下优点: l 不需要占用过多的磁盘空间。...l 无需重建索引结构,而是尽快地合并索引叶块,这样可避免系统开销过大。 如果将索引转移到其它表空间,那么需要重建索引。 综上所述,Oracle强烈建议不要定期重建索引,而应使用合适的诊断工具。
图 3-12 分区索引 与分区表类似,分区索引被分解成更小、更易于管理的索引片断。分区索引提高了可管理性、可用性、和可扩展性。...分区索引根据索引列是否包含分区键及分区键是否是索引的引导列可以分为有前缀的分区索引和无前缀的分区索引。有前缀的分区索引指的是包含了分区键,并且将其作为引导列的索引。...每个类型都有两个子类型,有前缀索引和无前缀索引。表各列上的索引可以有各种类型索引的组合。如果使用了位图索引,那么就必须是本地索引。...全局分区索引是通过指定GLOBAL参数指定的。本地分区索引比全局分区索引更容易管理,但是全局索引比较快。本地索引肯定是分区索引,但是全局索引可以选择是否分区。...关于全局索引,需要注意以下几点内容: ① 全局索引可以是分区索引,也可以是不分区的索引,全局索引必须是前缀索引,即全局索引的索引列必须是以索引分区键作为其前导列。
因此,需要找出那些无用或低效的索引,并删除它们(找出无用索引可以通过索引监控的方法)。但是,直接删除索引还是存在一定风险的。...这时,可能就会手忙脚乱地去找回索引定义语句、重建索引。...使索引不可见是使索引不可用或被删除的一种替代方法。使用不可见索引,可以完成以下操作: (1)在删除索引之前测试对索引删除后对系统性能的影响。...表 3-18 虚拟索引和不可见索引的区别 比较项目不可见索引(Invisible Indexes)虚拟索引(Virtual Indexes,无段索引)出现版本Oracle 11gOracle 9i有无索引段有索引段...如果未发现性能下降,那么可以删除该索引。还可以创建最初不可见索引,执行测试,然后确定是否使该索引可见模拟索引的存在而不用真实的创建一个完整索引。
♣ 题目部分 在Oracle中,位图连接索引是什么? ♣ 答案部分 位图连接索引(Bitmap Join Indexes)是建立在两个或更多表的连接之上的位图索引。...对于表列中的每个值,索引存储被索引表中的相应行的ROWID。相比之下,在标准位图索引中,索引是建立在一个表上的。在数据仓库环境中使用这种索引可以改进连接维度表和事实表的查询性能。...创建位图连接索引时,标准方法是连接索引中常用的维度表(Dimension)和事实表(Fact)。当用户在一次查询中结合查询事实表和维度表时,就不需要执行连接,因为在位图连接索引中已经有可用的连接结果。...③ 不可以对索引组织表创建位图连接索引,并且适用于常规位图索引的限制也适用于位图连接索引。...索引列通常是维度表中的描述列。
♣ 题目部分 在Oracle中, IS NULL如何用到索引? ♣ 答案部分 IS NULL用于判断某一列中的值是否为空。...当IS NULL作为WHERE条件的时候,该列是不会用到索引的,但是可以加伪列创建伪联合索引来使得IS NULL使用索引,看如下的例子: SQL> CREATE TABLE TB_LHR_20160427...("OBJ_ID" IS NULL) Note ----- - dynamic sampling used for this statement (level=2) & 说明: 有关NULL和索引的更多内容可以参考我的
No SQL知识体系概览
♣ 题目部分 在Oracle中,如何监控索引的使用状况?...♣ 答案部分 在开发应用程序时,可能会建立很多索引,那么这些索引的使用到底怎么样,是否有些索引一直都没有用到过,在这种情况下就需要对这些索引进行监控,以便确定它们的使用情况,并为是否可以清除它们给出依据...监控索引有两种方式: 1、直接监控索引的使用情况 (1)设置所要监控的索引:ALTER INDEX IDX_T_XX MONITORING USAGE; (2)查看该索引有没有被使用:SELECT *...可以从视图DBA_HIST_SQL_PLAN中获取到数据库中所有索引的扫描次数情况,然后根据扫描次数和开发人员沟通是否需要保留索引。...从图中可以看到有一个3.6G大的索引在13号到22号从没使用过,接下来,可以继续查询该索引是否是联合索引,创建是否合理,分析为何不走该索引,从而判断是否可以删除索引。
♣ 题目部分 在Oracle中,为什么索引没有被使用? ♣ 答案部分 “为什么索引没有被使用”是一个涉及面较广的问题。有多种原因会导致索引不能被使用。...首要的原因就是统计信息不准,第二原因就是索引的选择度不高,使用索引比使用全表扫描效率更差。...一、快速检查 n 表上是否存在索引? n 索引是否应该被使用? 二、索引本身的问题 n 索引的索引列是否在WHERE条件中(Predicate List)?...n 一个索引是否与其它的索引有相同的等级或者成本(Cost)? n 索引的选择度是否不高? n 在总体成本中,表扫描的成本是否占大部分? n 访问空索引并不意味着比访问有值的索引高效?...n 索引提示(Hint)是否不工作? n 索引列是否使用了前置通配符(%)? n 索引列是否使用了非等值连接符? n 是否在WHERE子句中对索引列进行了IS NULL值判断?
领取专属 10元无门槛券
手把手带您无忧上云