标签: nosql

从 dynamoDB 列表数据类型中删除前几个条目

高级要求:

  • 可能有数百万用户
  • 任何用户都可以收藏另一个用户
  • 需要存储用户的位置跟踪数据。最多必须存储 100 个最近的数据点。

我正在考虑使用 Dynamo DB 来实现它,通过以以下格式存储数据(使用 NOSQL 的动机是检索速度会很快,因为在一次获取中我将获得整个数据):

{
    "userID" : 2323423,
    "favs" :    [
            userIDA,
            userIDB,
            ...
    ],
    "lt" :  [
            {"timestamp1" : "coordinate1"},
            {"timestamp2" : "coordinate2"},
            ...
        ]
}
Run Code Online (Sandbox Code Playgroud)

userID 是主键。

查询要求是

  1. 添加删除收藏夹应该是可能的。
  2. 可能会出现一堆新的时间戳 <=> GPS 位置对,我需要将其输入到该用户的“lt”数据中。由于有 100 个 LT 数据点的限制,我也需要删除最旧的数据点。

我很确定 (1) 是直接使用 List 数据类型上的添加/删除 API。如何解决查询 (2)?如果 UPDATE 查询本身能够以某种方式迭代所有对象并删除旧的对象,那将是最好的。我已经读过 Dynamo DB 所理解的列表中的索引是整数格式,那么我们可以以某种方式利用它吗?列表中的元素是否总是从 0 到 N 索引?如果是这样,我可以从数组的开头删除适当数量的元素。有什么办法吗?

我愿意使用不同的数据模式,但请让我知道整个推理以及如何解决。

nosql amazon-dynamodb

2
推荐指数
1
解决办法
1101
查看次数

Cassandra在where子句中未定义的名称

我正在查询执行以下命令的 cassandra 表: select * from oap.purchase_events where clientNumber = '100'

该表包含一行 clientNumber 100 ,但是我收到此错误:

InvalidRequest: code=2200 [Invalid query] message="Undefined name clientnumber in where clause ('clientnumber = 100')"

表定义:

    CREATE TABLE oap.purchase_events (
    "parentId" text,
    "childId" text,
    "clientNumber" text,
    cost double,
    description text,
    "eventDate" timestamp,
    "logDate" timestamp,
    message text,
    "operationalChannel" text,
    "productDuration" bigint,
    "productId" text,
    "transactionId" text,
    volume double,
    "volumeUnit" text,
    PRIMARY KEY ("parentId", "childId")
) WITH CLUSTERING ORDER BY ("childId" ASC)
    AND bloom_filter_fp_chance = 0.01
    AND caching = '{"keys":"ALL", …
Run Code Online (Sandbox Code Playgroud)

cassandra nosql

2
推荐指数
1
解决办法
1589
查看次数

投影表达式有好处吗?

阅读投影表达式文档并没有给我足够的技术细节来了解我们通过使用它们究竟能节省什么。

  1. 我保存了什么内存,如果有的话。它在 DynamoDB 端吗?或者只是在应用程序级别。如果是这样,它如何影响性能和定价?
  2. 与通过键查找条目相比,隔离 ddb 条目的嵌套属性的成本更高。

对于一些上下文,我正在尝试为多语言项目确定数据结构:

选项A:

{
  id: 'yes',
  en: 'Yes',
  es: 'Si'
},
{
  id: 'no',
  en: 'No',
  es: 'No'
}
Run Code Online (Sandbox Code Playgroud)

选项 B:

{
  id: 'en',
  yes: 'Yes',
  no: 'No'
},
{
  id: 'es',
  yes: 'Si',
  no: 'No'
}
Run Code Online (Sandbox Code Playgroud)

虽然选择选项 A 似乎很明显,但我有一个相互矛盾的用例:当客户端应用程序启动时,它需要获取 UI 的整批字符串。因此,对于选项 A,这可能意味着对 300 个项目进行批量查询。不理想。

amazon-web-services nosql amazon-dynamodb

2
推荐指数
1
解决办法
951
查看次数

显示所有可能性?(y 或 n)

我创建了这段代码来创建一个TPC-H schemain MongoDB,并进行了一些验证:

db.createCollection("lineItem", {
  validator: {
    $or: [
      {
        "lineNumber": { $type: "int"}      
      },
      {
        "quantity": { $type: "decimal"}      
      },
      {
        "extendedPrice": { $type: "decimal"}      
      },
      {
        "discount": { $type: "decimal"}      
      },
      {
        "tax": { $type: "decimal"}      
      },
      {
        "returnFlag": { $type: "string"}      
      },
      {
        "lineStatus": { $type: "string"}      
      },
      {
        "shipDate": { $type: "string"}      
      },
      {
        "commitDate": { $type: "string"}      
      },
      {
        "receiptDate": { $type: "string"}      
      },
      {
        "shipInstruct": { $type: "string"}      
      },
      {
        "shipMode": …
Run Code Online (Sandbox Code Playgroud)

database insert mongodb nosql

2
推荐指数
1
解决办法
5865
查看次数

从 DocumentDB 联接查询中获取所有字段

我在 Azure 中有一个 DocumentDB 数据库,我通过 CosmosDB API 访问它。

我想通过一个简单的查询获取文档的所有父字段:

SELECT p.id 
    FROM parent p JOIN ch IN p.property1.child
    WHERE CONTAINS(UPPER(ch.name), UPPER(@childName))
Run Code Online (Sandbox Code Playgroud)

这个查询有效,但我只得到 'id' 属性。我不能使用 p.* (抛出一个语法错误),而且这个列表将来可能会改变。使用 * 我收到此错误:'SELECT *' 仅对单个输入集有效。

有没有一种方法可以获取父文档的整个 json,而无需在 select 子句上编写完整的字段列表?

nosql document-database azure-cosmosdb

2
推荐指数
1
解决办法
597
查看次数

Firebase 实时数据库数据保存策略

我正在研究 Firebase 实时数据库如何存储值。例如:如果数据类型是 number 而不是我存储的数字null,它是分配 1 个字节还是 8 个字节?我在文档中找不到任何关于它的信息。

第二个问题是:我要发送一个geolocation点。在数据库中,我想检查它是否被强制转换为floatgeopoints数据类型。我该如何检查?

nosql firebase firebase-realtime-database

2
推荐指数
1
解决办法
2402
查看次数

如何更新对象 Nodejs/MongoDB 数组中的字段

我想要的只是将字段“done”的值更新为“true”

我正在用 nodejs 开发

这是文件:

{
"_id" : ObjectId("5a730e55114dbc2a0455c630"),
"email" : "email@gmail.com",
"password" : "12356789",
"tasks" : [ 
    {
        "title" : "new to do ",
        "description" : "new something ",
        "date" : "2018-02-07T18:16:29.469Z",
        "done" : false
    }, 
    {
        "title" : "new to d odo ",
        "description" : "dod ododoododododo",
        "date" : "2018-02-07T18:25:14.881Z",
        "done" : false
    }
]
}
Run Code Online (Sandbox Code Playgroud)

json mongodb nosql node.js express

2
推荐指数
1
解决办法
3577
查看次数

使用mgo golang mongodb动态插入多个文档

如何仅使用单个DB 调用(如db.collection.insert() 中的那样,使用mgo库将文档数组插入到 MongoDB 中?

我有以下Transaction结构:

    type Transaction struct {
    Brand         string `json:"brand"`
    Name          string `json:"name"`
    Plu           string `json:"plu"`
    Price         string `json:"price"`
  }
Run Code Online (Sandbox Code Playgroud)

POST请求中,我将收到这些结构的数组。我想将它们作为单独的文档插入到 MongoDB 中,但使用单个 DB 调用,如db.collection.insert() 中所述

我尝试使用c.Insertmgo

以下是代码片段:

  func insertTransaction(c *gin.Context) {
    var transactions []Transaction
    err := c.BindJSON(&transactions)
    if err != nil {
        c.AbortWithStatusJSON(http.StatusBadRequest, map[string]string{"error":"invalid JSON"})
        return
    }
    err = InsertTransactons(transactions)
    if err != nil {
        c.AbortWithStatusJSON(http.StatusInternalServerError, &map[string](interface{}){
            "status":  "error",
            "code":    "500", …
Run Code Online (Sandbox Code Playgroud)

database go mongodb nosql mgo

2
推荐指数
1
解决办法
1万
查看次数

管理 AWS DynamoDB 中分层文件夹结构中可用的文档

我是 DynamoDB(文档数据库)的新手,需要帮助设计 nosql 数据库中的表结构。

我需要管理不同文件夹中可用的文档。文件夹层次结构可以转到第 n 级,并且同一文档可以在多个文件夹中使用。

在关系数据库的情况下,我可以维护不同表中的层次结构和文档,并通过在这些表上应用连接来提取所需的信息。

我需要知道在 DynamoDB 表中存储这些数据的最佳方式,以便可以最有效的方式提取信息。每个用户都有一定的权限,他/她可以根据这些权限查看或编辑文档。

目前我正在尝试将其存储在以下结构中:

documents = [
{
    _id: ...,
    title: "...",
    date_uploaded: ...,
    folders: [
        folderId,
        ...
    ]
},
...
]

folders = [
{
    _id: ...,
    title: "..."
}
]
Run Code Online (Sandbox Code Playgroud)

在 documentId 的帮助下,我可以从文件夹表中提取文档所在的文件夹列表以及该文件夹的详细信息,但不确定如何维护文件夹层次结构。

有人可以帮我解决这个问题吗?

database-design nosql amazon-dynamodb dynamodb-queries

2
推荐指数
1
解决办法
1223
查看次数

MongoDB 复合索引 - 排序顺序重要吗?

我最近为我的一个项目潜入了 mongodb。我一直在阅读索引,对于一个小集合,我知道它没有多大关系,但是当它增长时,如果没有正确的索引和查询,就会出现性能问题。

假设我有一个这样的收藏

{user_id:1,slug:'one-slug'}
{user_id:1,slug:'another-slug'}
{user_id:2,slug:'one-slug'}
{user_id:3,slug:'just-a-slug}
Run Code Online (Sandbox Code Playgroud)

我必须搜索我的收藏在哪里

user id == 1 and slug == 'one-slug'
Run Code Online (Sandbox Code Playgroud)

在这个集合中,slug 对用户 ID 来说是唯一的。也就是说,用户 id 1 只能有一个值为“one-slug”的 slug。

我知道 user_id 由于其基数高而应优先考虑,但是 slug 呢?因为它在大多数时候也是独一无二的。我也无法理解升序和降序索引,或者在这种情况下它如何影响性能或我应该在这个集合中使用的正确顺序。

我已经阅读了一些,但我无法理解它,特别是对于我的场景。听到别人的声音会很棒。

database indexing mongodb nosql compound-index

2
推荐指数
1
解决办法
2254
查看次数