我已经创建了一个分区集合,其中需要在DateTime字段(如ISO-8601)上使用范围索引,在其他一些字段上使用散列索引。这些是我将只对其进行筛选的字段,因此我不需要对任何其他字段进行索引
我已经这样定义了我的索引(使用扩展方法):
奇怪的是,当我检查索引策略时,我可以看到创建了很多对我来说毫无意义的额外索引。请参阅下面的定义和我的评论
[{
"path" : "/playerId/?",
"indexes" : [{
"kind" : "Hash",
首先,我使用的是azure cosmos db
一个人为多个办公室工作。每个办公室可以是主办公室,也可以不是主办公室。如果它是一个IsMaster它可以将master\u的边缘转移到另一个办公室。每个都适用于边缘,每个人都有AccessLevel属性
逻辑:给定一个人的名字,获取该人为之工作的所有办公室,这些办公室都是IsMaster='true'。然后返回所有IsMaster和AccessLevel的
我的最终目标是在给定人名的情况下生成下面的JSON对象:
[
{
"Master
CosmosDb具有良好的全球分布特性,可提供更快的数据响应。这对于直接访问CosmosDb的移动应用程序非常有用,因为用户遍布全球
但是,我使用的是Azure中托管的ASP.NET Web应用程序。在这里,我的数据库通信应用程序将始终保持固定距离
在这种情况下,我能从CosmosDb中获益吗
这是针对Azure托管的ASP.NET应用程序的当您了解noSQL概念和代码时,您可以使用CosmosDB,它对读写过程有不同的实现,或者您正计划进行微服务,或者您有其他项目依赖于您的Webapp项目和您
我正在研究Azure Cosmos DB的Gremlin API,并试图将一些SQL语句转换为Gremlin遍历
命令如下:
//add product vertex
g.addV('product').property('id', 'product1')
g.addV('product').property('id', 'product2')
g.addV('product').property('id', 'product3')
g.addV('product').property('id
我是宇宙数据库的新手。我选择了cosmos db(核心sql),创建了一个包含两个容器的数据库,即EmployeeContainer和DepartmentContainer。现在我想查询这两个容器,并获取员工详细信息和相关的部门详细信息。我坚持一个观点,需要帮助
下面是我的容器的结构。
员工容器:ID、姓名、部门ID
部门容器:ID,名称
提前感谢。Cosmos DB不是关系数据库。如果同时查询不同的实体,则不会将它们存储在不同的容器中。它们要么嵌入到其他实体中,要么使用与同一容器中的其他实体共
拥有异构集合(具有多个完全不同的文档模式)是否会导致性能下降
e、 g:
如果我有1000个文档具有相同的模式,那么查询它的速度将比有500个文档具有模式A和500个文档具有模式B快。否,没有惩罚。默认情况下,JSON文档的所有属性都会自动为您编制索引,因此通过对type等属性进行筛选,您可以轻松地在同一个集合中筛选出不同的文档类型。这就是Cosmos的使用方式
与您关于索引策略的问题中的屏幕截图相同,但在这里也是相关的,因为这个主题涉及到很多调查宇宙的人。很高兴知道,如果要执行Order By
我们正在尝试使用文档DB触发器生成自动编号。为此,我们在集合中有一个特殊的文档来存储自动编号,然后通过调用此触发器来创建集合中的所有其他文档。触发器的行为方式如下-
1从自动编号文档中读取上次使用的编号。
2将数字增加1,然后将增加的值保存回自动编号文档
3创建一个新文档,其中autoId字段设置为递增值,新文档的其余字段传递到正文中
await documentClient.CreateDocumentAsync("collectionURI", newDocument, new Reques
我在DocumentDB中有一个集合,其中的对象如下所示:
{
"id":"1de03a93-729d-43da-985a-12584079b4f8",
"Components":[
{
"Name":"MyComponentName1",
"Value": 12345
},
{
"Name":"MyComponentName2",
"Value": 34567
},
{
"Name":"MyCo
我目前面临Cosmos DB的查询性能问题,我确信我已经遵循了Microsoft页面中的大多数性能提示,但查询仍然需要>1秒的时间
连接策略
private static readonly ConnectionPolicy ConnectionPolicy = new ConnectionPolicy
{
ConnectionMode = ConnectionMode.Direct,
ConnectionProtocol = Protocol.Tcp,
我希望以单向方式进行遍历,但返回并获取路径中过滤的顶点时遇到困难。请帮忙
g.V().hasLabel('states').as('s').
in().hasLabel('url').as('u').
select('s').
where(and(inE('exporting').has('forward','states'),
inE('release').has('forward','states'))).
select('u')
由于您的所有筛选器
从创建/更新文档到Cosmos DB Change Feed处理器接收文档之间的“正常”延迟是多少
我们所做的一些操作分为两个阶段:创建,然后几毫秒后更新
我知道只有文档的最新版本才会出现在更改提要中。但是如果更改提要是超级快速的,我将最终处理文档的两个版本。因为我只关心“最终”版本,所以比必要的使用率高出一倍
当然,我会设计我的处理器,让它不在乎。当然,我怀疑是否有任何一成不变的保证。但我还是很好奇,不知道以前是否有人有过经验(并注意过这个细节)。再过几周,我可能也能发布我自己的经历
编辑:四
我正在使用Cosmos DB多区域(单区域写入)帐户。目前,它在美国东部和西部启用。这个地区在美国西部。ChangeFeed侦听器部署在美国东部和西部
鉴于这种设置,我想了解,变更提要是如何工作的
变更提要侦听器是否从其部署的区域接收变更提要。示例-东部的侦听器从东部读取,西部的侦听器从西部读取
或
它们从写区读取数据。在我的情况下,我们是西方国家
我正在使用change feed处理器库读取change feed,代码为:
var feedCollection = new DocumentCo
我在Cosmos DB(SQL API)中有许多集合,许多服务使用相同的数据库。每分钟执行100次查询,有时我会看到警告。我知道所有的查询并不是在所有的应用程序中都得到优化
是否有任何方法可以获取所有查询和执行时间(如SQL server Profiler跟踪)
我试图启用Cosmos DB诊断设置,但没有找到任何跟踪查询的方法您必须采用的方法是在SDK中启用PopulateQueryMetrics
启用查询的将填充x-ms-documentdb-query-metrics标题。该值如下所示:
在针对非分区集合执行下面的cosmos document db sdk代码时,我获得了“Microsoft.Azure.Documents.Client.FeedResponse”的几乎所有属性,如下所示
但是,在对分区集合执行下面的cosmos document db sdk代码时,“Microsoft.Azure.Documents.Client.FeedResponse”的大多数属性返回默认值,如下所示
FeedResponse针对分区和非分区集合的这两种不同行为有何原因?请澄清
使用
我有一个Cosmos DB集合,有400万个文档(~5GB)。以下查询报告的费用为2.79卢比:
SELECT * FROM c WHERE c.type='type1' and STRINGEQUALS(c.name,'abc',false)
但是使用不区分大小写搜索的相同查询(通过将false替换为true)的成本1228 RUs
有没有解释为什么不区分大小写的查询比区分大小写的查询贵470倍以上?我对此感到惊讶,因为美国
StartsWith和StringEquals使用不区分大小写选项
DocumentDB用户收到这封电子邮件说,从2月1日起,他们将根据其数据所在的地区收取费用,到目前为止一切都很清楚
此外,邮件还说:“DocumentDB的资源GUID也将改变”,并且有一个指向“”的链接
有人能更好地解释这件事吗?我不明白GUID是否与单个文档、订阅或其他任何内容相关。这个GUID是什么?它的含义是什么?我不知道我是否真的需要对我的应用程序进行更改以及更改类型
谢谢也许我已经明白GUID是什么了。我认为这是您的DocumentDB订阅的id,它需要计费。
事实上,你可以在这里
我们构建了一个文档模式,其中作业文档由Id属性唯一标识,并通过ParentJobId属性表示它们到父级的链接。
例如:
{
"Type": "Request",
"StateName": "Success",
"id": "4365b7ec-6eee-468a-94f6-ab65d6434611",
"ParentJobId": null
},
{
"Type": "Machine",
"StateName": "ChildJobFailed",
"id": "270
如何使用查询更新文档数据库中的文档(基本上希望使用存储过程更新文档)?以下示例可能就是您需要的:
以下是一个简化版本:
function updateSproc(id, update) {
var collection = getContext().getCollection();
var collectionLink = collection.getSelfLink();
var response = getContext().getResponse();
t
给定类型为T:Document的泛型对象和PartitionKeyDefinition,如何获取与该资源对应的PartitionKey?我使用反射来处理一些简单的情况,但我必须想象有一些内置函数来处理所有情况。但是我没有找到它。根据您的描述,我创建了一个结构如下的文档:
var results=client.CreateDocumentQuery<MyDocument>(UriFactory.CreateDocumentCollectionUri(DatabaseId,
我正在按原样从路径运行Change Feed处理器示例。我只更改了App.config文件中所需的键值,以指向我的Cosmos DB
在对分区集合运行此示例时,在注册观察者工厂时出现异常
await host.RegisterObserverFactoryAsync(docObserverFactory);
例外情况详情:
InvalidOperationException: PartitionKey value must be supplied for this operation.
示例图:
g.addV('location').property('name','Location A').as('location')
.addV('building').property('totalLetterCapacity',50).as('building')
.sideEffect(addE('has-building').from('location'))
.addV('letter').property('totalLetters',10).as('a')
.sideEffec
我正在尝试使用cosmos db change feed(我指的是和)
当我启动一个使用者的多个实例时,观察者似乎只看到一个分区键范围。我只看到一条消息-为分区键范围0打开了一个观察者,它开始接收更改提要。因此,在任何给定的点上,只有1个消费者接收馈送。如果我关闭一个消费者,下一个消费者就会高兴地接起
我似乎无法理解cosmos db中的分区键/范围。在COSMOSDB中,我创建了一个数据库和其中的一个集合。我已经定义了一个分区键-/myId。我在myId中存储唯一的guid。我在收藏中保存了大
在Azure试用期间,我创建了两个最低400 RU/s的CosmosDB集合
我能够根据需要放大和缩小它们,通常在400到5000 RU/s之间
我在我的一个集合中填充了大量的测试数据(我目前在其中大约50GB),平均分布在8个分区中(根据门户中的“度量”视图)
我再也无法将收集量缩小到400 RU/s。新的最小值显示为800 RU/s:
我怀疑这与分区的数量有关,但我在文档中找不到任何与此相关的内容
这令人困惑,我的理解是RU/s可以在任何时候缩小到400
我的目标是尽可能地缩小RU/s,我
我的CosmosDB中有如下结构的条目:
{
"id": "~results:123",
"catalog:entity": [
{
"id": "~song.base:1da",
"schema:name": "Autobiography",
"schema:code": [
"7dhs"
]
},
{
我正在努力从Cosmos DB获得我想要的结果
我的收藏可以表示为:
[{
...,
"category": null
"code": "A."
},
{
...
"category": "A."
"code": "A2."
},
{
...,
"category": "A."
"code": "A1."
},
{
...,
"category": "A1."
"code": "A12."
}]
其中每个文档都可以通过“类别”字段链接到另
我正在尝试在Azure Cosmos中使用Gremlin执行类似于SQL连接操作的操作
我想达到的目标是这样的。如果我们以TinkerPop现代图形为例-
我想检索所有顶点,但对于每个顶点,还要获取一个贴图,其中键是关系类型,值是该关系的顶点数组。对于顶点id:1,这将是:
name: marko
age: 29
relationships: {
created: [<node id:3>],
knows: [<node id:2>, <node
对于SQL数据库,我可以在Azure Portal的概览刀片中轻松查看数据库的大小。或者我可以查询例如EXEC sp_spaceused来找出答案
Cosmos DB有这样的功能吗?搜索监视器->度量->选择范围(您的Cosmos)->选择度量(数据使用或索引使用)
另一种方法是转到cosmosdb->Metrics(Classic)如果您指的是总存储消耗存储,您可以在azure门户的metric blade中看到它。与@Vova在下面所说的相同,这里是答案。
我正试图找到一种在Azure DComentDB上执行不区分大小写查询的方法。
在SQL中,有一个“COLLATE”可以实现这一点
Azure DocumentDb执行区分大小写的搜索
那么这里的“COLLATE”是什么意思呢
关于。Codehelp,DocumentDB中没有与COLLATE等效的内容-只允许UTF8字符串比较。这当然是我们要考虑的事情,请在下面投票。p>
PS:如果您想更详细地讨论,可以通过Microsoft.com的arramac与我联系。谢谢Aravind。我们会联系的。
我使用了带有Log4Net的关系数据库来使用Log4Net配置记录消息。
我不知道如何配置和使用文档数据库 您可以将日志消息包装为JSON文档并保存。您可以使用.NET、Java、Node.js或Python中的任何SDK,也可以使用REST API在DocDB中执行CRUD操作。
OP没有征求关于什么是更好的方法的意见。
我使用以下代码来获取使用分页的文档列表。代码运行良好。但是如果我想从客户端发送延续令牌进行分页,那么如何找到延续令牌呢
function queryCollectionPaging() {
return new Promise((resolve, reject) => {
function executeNextWithRetry(iterator, callback) {
iterator.executeNext(function (err,
在构建会话BRK3060中,Mark Russinovich演示了一些在同一数据库上同时使用SQL和Graph API的代码,这些代码从45:27开始:
有人知道在同一个数据库上使用多个API进行读/写操作吗?刚才我试过。在Graph API中创建了一个数据库,能够在相同的数据上使用SQL查询select*from c和Graph查询g.V。它在微服务/分布式应用程序中看起来很有用。
下面是我的json示例
{
"servletname": "cofaxEmail",
"servlet-class": "org.cofax.cds.EmailServlet",
"init-param": {
"mailHost": "mail1",
"mail
假设此模型:
拥有一组作者文档,每个作者都有一些帖子。每个Post都包含一个注释数组
JSON:
我需要一个返回以下输出的查询:
[
{
"WriterName": "John",
"WriterCommentsCount": 2
}
]
我设法获得了作者的评论,但在获取writercommentscont旁边的名称(或其他属性)时遇到问题。你知道怎么知道作者的名字吗
这就是我到目前为止尝试过的(只有作者的评论
如果我在azure DocumentDB存储过程中抛出错误,它将作为错误请求返回给客户端应用程序。如果找不到文档或用户无权查看特定文档,如何设置状态代码?存储过程不会将错误号转换为响应状态代码。为了将错误代码传回客户机,存储过程可以将其作为响应的一部分,如下所示:\uuuuuu.response.setBody({errorCode:err.number})如果documentDB提供抛出错误的选项,比如抛出新错误(403,‘您无权查看文档’);
下面的代码片段将迭代更改提要。如果我们需要跟踪最后一个成功处理的记录,则是由循环中的continuation plus索引(continuation+i)和/或文档的ETag计算的记录。如果出现故障,如何从该确切位置查询changefeed?不清楚,因为当我从0开始请求1000时,测试中的延续令牌是1120
IDocumentQuery < Document > query = client.CreateDocumentChangeFeedQuery(
collectionUri,
我正在使用COSMOSDB(DocumentDB)和.NETCore。假设我必须使用完全不同的文档(简化示例):
要获得所有这些,我可以逐个运行两个查询:
var markets = client.CreateDocumentQuery<Market>()
.Where(x => x.DocumentType == "market").ToList()
var cities = client.CreateDocumentQuery<City>()
.Where(x
我正在尝试保存一个属性值,该属性值看起来类似于某个日期或某个日期的一部分,在Azure Cosmos DB中使用Graph API(Gremlin)时会出现如下错误:
g.V('id').property('PartReference', '2016-02');
错误消息
Gremlin Query Compilation Error: Data type 'Date' not yet supported by
Binary Comparison functions
在我看来,Gremlin
当使用非强一致性模型并更新文档时,cosmos似乎总是有可能覆盖我的更改。很明显,我的思想中遗漏了一些东西
任何帮助都将不胜感激 您应该使用乐观并发控制在所有一致性模式中强制执行单调写入。这里或多或少地回答了这个问题:
本质上,如果您在请求选项上设置AccessCondition,并将其设置为要更新的项的ETag,则可以保证所有一致性模型的正确性
有关C#中的示例,请参见下面的代码示例:(如果你想要一种不同的语言,只要问一下,如果我试图用eTag更新事件一致性下的文档,并且我得到了一个冲突回复,
是否可以对子项执行条件查询?我正在尝试返回所有组,以及计数大于0的所有子组(以及这些子组)。请注意,如果计数大于0,子组也需要返回子组
文件:
{
"id": 1,
"name": "name1",
"groups": [
{
"id": 1,
"name": "name1",
"subGroups": [
{
"id": 1,
"name": "name1",
"
如何编写gremlin查询哪一个可以
获取现有顶点
删除所有现有属性(显然,id、标签、索引属性等除外)
添加具有值的新属性(主要是字符串)
或者是否有其他方法可以使用gremlin查询覆盖顶点?以TinkerPop modern graph为例:
gremlin> g.V().has('person','name','marko').valueMap(true)
==>[id:1,label:person,name:[marko],age:[29]]
假设完全支持Gremlin
我开始学习graph数据库,但在使用Gremlin查询语言进行概念验证时遇到了一个小问题
假设我有一个顶点,它表示一种特定类型的螺栓,每个属性表示螺栓可用的材料和成本
id: bolt-123,
label: part,
properties: [
{ steel : 0.05 },
{ aluminum : 0.02 },
{ iron : 0.03 },
{ plastic : 0.01 }
]
我想能够得到所有螺栓和他们的成本,是由塑料制成的清单。根据我目
在构建文档结构时,让我们假设我们有两种文档:Person和Pet。两者都可以是单独的文档,同时宠物也可以是个人收藏的宠物
如果Pets集合中的子文档是一种更简单的类型,那么如果我需要查找原始Pet文档(这是其中的一个子集),那么包含原始Pet中的自链接是否是一个好主意
这是在CosmosDb中查找文档的最有效方法,还是应该只使用其ID和已知文档集合
自链接是数据库帐户中每个资源的静态可寻址Uri,遵循Azure Cosmos DB资源模型。
例如,文档的自链接可以是dbs/db_resource
给定一个类似于以下内容的Cosmos文档集合,我想使用COSMOSSQL生成一个“类别”的分组(不同?!?)列表。在这方面的任何帮助都将不胜感激
[
{
"id": "f0136e76-8e66-6a5a-3790-b577001d6420",
"itemId": "analyze-and-visualize-your-data-with-azure-cosmos-db-notebooks",
"title": "Built-in Jupyter notebooks
问题:当属性名称中使用破折号时,使用SQL API查询COSMOS DB的正确语法是什么
错误:
未能查询容器约会的项:{“代码”:400,“正文”:{“代码”:“BadRequest”,“消息”:“网关检索查询计划失败:消息:{“错误”:[{“严重性”:“错误”,“位置”:{“开始”:7,“结束”:8},“代码”:“SC1001”,“消息”:“语法错误,语法不正确”
这个查询有效
选择a.ID
从a点开始
此查询失败
选择一个点名称
从a点开始
我所尝试的:
我试着用双引号,单引号,(),来包
我有以下代码:
CosmosClientOptions options = new CosmosClientOptions() { AllowBulkExecution = true };
CosmosClient cosmosclient = new CosmosClient(connStr, options);
Container container = cosmosclient.GetContainer("CoachAPI", "Vessels");
我希望我的Cosmos DB数据库中的两个不同容器始终包含完全相同的数据。唯一的区别是容器的分区键
最简单的方法是什么?我正在寻找一种没有或很少代码的方法,因此我不喜欢互联网推荐的数据工厂解决方案。也许Azure中还有另一个服务或第三方服务——或者也许可以通过简单的触发器可靠地完成
编辑:澄清-我需要他们不断更新。一个容器是所有数据在正常使用过程中发生更改的地方,另一个容器应保持同步。这是它的功能代码:
using System;
using System.Collections.Generic
我使用的是文档数据库,有些文档可能会变得太大,以至于超过了大小限制(2MB)。我正在尝试将大块存储为附件,下面是我的代码片段:
var stringifiedItems = JsonConvert.SerializeObject(doc.Items);
var attachmentStream = new MemoryStream(Encoding.UTF8.GetBytes(stringifiedItems));
doc.Attachment = await _client.CreateAtt
Azure DocumentDB.NET SDK文档查询API提供了按精度减少订单的选项,但确切的预期效果仍然不明确。唯一的问题是:
获取或设置在Azure DocumentDB数据库服务中启用低精度order by的选项
根据FeedOptions或结果的顺序有时与查询中请求的顺序不同,没有说明排序行为
提到的选项实际上是做什么的
当使用“低精度”时,我们可以期望什么精度
对于超出“低精度”的实际顺序,我们能断言什么
Azure Cosmos DB支持改变索引的精度,以减少索引的存储空间(默
我有以下cosmosdb文件:
{
id: "id",
outer: [
{
"inner": [ "a", "b", "c" ]
},
{
"inner": [ "d", "e", "f" ]
}
]
}
我需要创建一个SQL请求,它将返回内部数组
给出这个图表
g.addV("1").property(id,'a').as('a').
addV("2").property(id,'b').as('b').
addV("3").property(id,'c').as('c').
addE('related').from('a').to('b').
addE('related').from('a').to('c').
addE('related').from('b
1 2 3 4 5 6 ...
下一页 最后一页 共 26 页