标签: data-modeling

如何在 Cassandra 中存储无符号整数?

我通过 Datastax 驱动程序在 Cassandra 中存储一些数据,并且需要存储无符号 16 位和 32 位整数。对于无符号 16 位整数,我可以轻松地将它们存储为有符号 32 位整数,并根据需要进行转换。然而,对于无符号 64 位整数,我不知所措。我可以将它们存储为字符串并解析它们,也可以将它们存储为字节数组。我可以将它们存储为 64 位有符号整数,并执行与 64 位无符号整数之间的转换所需的位操作。

推荐的方式是什么?

.net c# data-modeling cassandra

5
推荐指数
1
解决办法
2857
查看次数

Cassandra 对消息收件箱的已读/未读状态进行建模,CQL

我正在尝试为消息框应用程序找到最佳的数据模型。该消息按以下顺序显示:首先出现 \xe2\x80\x98unread\xe2\x80\x99,然后当用户滚动时,将出现 \xe2\x80\x98read\xe2\x80\x99 消息。在这两个类别中,我想按到达时间对消息进行排序。类似于 Gmail 中的优先收件箱。

\n\n

我想使用的第一个模式是:

\n\n
CREATE TABLE inbox \n    (userId     uuid,\n     messageId  timeuuid,\n     data       blob,\n     isRead     boolean,\n  PRIMARY KEY(userId, isRead, messageId))\n  WITH CLUSTERING ORDER BY (isRead ASC, messageId DESC);\n
Run Code Online (Sandbox Code Playgroud)\n\n

所以我的数据首先按布尔字段排序,然后按时间排序。现在,我可以轻松地先查看“未读”消息,在它们全部结束后,我将开始阅读“已读”消息。

\n\n

问题是我无法更新任何消息状态,因为它是主键的一部分。我可以执行删除然后插入批量操作,它也是同一行。

\n\n

另一个解决方案是:

\n\n
CREATE TABLE inbox\n    (userId     uuid,\n     messageId  timeuuid,\n     data       blob,\n     isRead     boolean,\n  PRIMARY KEY((userId, isRead), messageId))\n  WITH CLUSTERING ORDER BY (messageId DESC)\n
Run Code Online (Sandbox Code Playgroud)\n\n

每个状态都有一行。我获得了非常轻松的访问权限,但这是否意味着我必须处理交易?读取消息时,我必须从 \xe2\x80\x98unread\xe2\x80\x99 行中删除它,并将其插入到 \xe2\x80\x98read\xe2\x80\x99 行,它们可能位于不同的分区中。

\n\n

分区键的另一个版本可以是:

\n\n
PRIMARY KEY(userId, messageId)\n
Run Code Online (Sandbox Code Playgroud)\n\n

然后我会在 isRead 上添加一个二级索引。我的查询将始终针对某个用户而不是一组用户。

\n\n

有什么更好的想法吗?或者还有其他的建模想法吗?

\n

data-modeling cql cassandra secondary-indexes clustering-key

5
推荐指数
1
解决办法
695
查看次数

更新 Cassandra 中的非规范化数据

假设我们有可以评论视频的用户,并且我们希望显示带有用户名的视频的所有评论。用户也可以转到他的个人资料页面并更改他的名字。

基于此答案 Cassandra非规范化数据模型中介绍的 Cassandra 数据建模实践,我创建了这样的表:

CREATE TABLE users (
   user_id UUID,
   first_name TEXT,
   last_name TEXT,
   PRIMARY KEY ((user_id))
); 

CREATE TABLE comments_by_video (
   video_id UUID,
   added_at TIMESTAMP,
   user_id UUID,
   comment TEXT,
   first_name TEXT,
   last_name TEXT,
   PRIMARY KEY ((video_id), added_at, user_id)
);
Run Code Online (Sandbox Code Playgroud)

看起来棒极了,我们只需一个查询就可以获得视频评论所需的数据。

现在,让我们考虑这样的用例。

用户创建了大量评论(例如 10 000 条),然后决定更改他的名字。我们应该更新所有评论以更改他的名字吗?有没有办法让它变得高效?

data-modeling denormalization cassandra nosql

5
推荐指数
1
解决办法
1574
查看次数

Firestore 的复杂数据模型

我正在使用 Firestore + angularfire 构建我的第一个应用程序,由于缺乏 Firestore 经验,定义数据模型非常困难。我需要你的帮助。

我有以下实体和依赖项

  1. 餐厅:它们是独立的,可以由应用程序的用户注册。
  2. 创建餐厅的用户成为“所有者”。他/她可以邀请其他用户成为餐厅的“服务员”。
  3. 用户可以从一个或多个餐厅(可能来自不同的所有者)收到“成为我的服务员”邀请。
  4. 我们还有另一个实体“客户”。该实体的条目包含有关订购的菜肴和饮料、价格、小费等的数据...

然后是以下规则

  1. 每个业主可以看到他/她的餐厅内的任何“客户”数据,但看不到其他餐厅的数据。
  2. 每个“服务员”都可以看到他/她服务的顾客(在任何餐厅)的数据,但看不到其他顾客的数据。

正如您所看到的,存在多个依赖项,包括多个 OR 条件,Firestore 中的“where”过滤器不支持这些依赖项。因此,我不确定是否应该将客户集合嵌套到每个餐厅文档中,或者是否应该将所有客户放在根集合中然后过滤它们。

您能否帮我解决这个问题,并提供一些关于您认为如何使用 Firestore 规则进行管理的最佳方法的想法?

data-modeling firebase google-cloud-firestore

5
推荐指数
1
解决办法
1861
查看次数

将数据从 Oracle 数据库迁移到 MongoDB 的策略

我有一个包含生产数据的现有 Oracle 数据库。我打算迁移到MongoDB,所以我想将Oracle数据库中现有的数据迁移到MongoDB。Oracle数据库和MongoDB中存储的数据的数据模型会有所不同。

我计划使用https://blogs.oracle.com/jsondb/generate-json-data从 Oracle 数据库获取所有 json 数据。一旦我获得包含所有数据的 json 文件,我会将其导入到 MongoDB 中。如果从 Oracle 数据库提取的数据不符合我的要求,我将创建一个实用程序来将每个集合的数据转换为多个 json 文件。

如果有更好的方法,我需要一些建议,我的解决方案是否是解决问题的正确方法?

database oracle data-modeling database-migration mongodb

5
推荐指数
0
解决办法
4610
查看次数

如何处理 Data Vault 模型中删除的记录(从源)?

我们正在构建一个Data Vault (2.0)模型来捕获 SalesForce 数据。与许多其他源一样,源中的记录被软删除。当我们将数据获取到数据模型时,我们不想过滤任何数据,也不想捕获目标系统中已删除的记录。搜索了处理数据仓库模型中已删除记录的最佳实践,但没有成功。有人可以在这里说明一下吗?我们是否应该添加IsDeleted标志HubSatellite考虑模型的未来扩展以及要遵循的最佳设计实践。此外,此处的任何参考材料链接都会有很大帮助。谢谢。

data-modeling data-vault

5
推荐指数
1
解决办法
2585
查看次数

使用动态函数更新多个集合的元素

设置:

我有几个各种数据结构的集合,代表虚拟系统中模拟对象的状态.我还有许多函数可以转换(即基于原始对象和0或更多参数创建对象的新副本)这些对象.

目标是允许用户选择一些对象来应用转换(在模拟规则内),将这些函数应用于这些对象,并通过用新的对象替换旧对象来更新集合.

我希望能够通过将较小的变换组合成较大的变换来构建这种类型的函数.然后评估这个组合功能.

问题:

如何构建我的程序以使其成为可能?

我用什么样的组合来建立像这样的交易?

想法:

  1. 将所有集合放入一个巨大的结构中并传递这个结构.
  2. 使用状态monad来完成基本相同的事情
  3. 使用IORef(或其中一个更强大的表兄弟,如MVar)并构建一个IO动作
  4. 使用功能反应式编程框架

1和2看起来像是带着很多行李,特别是如果我想最终将一些集合移动到数据库中.(Darn IO Monad)

3似乎运作良好但开始看起来很像重新创建OOP.我也不确定在什么级别使用IORef.(例如IORef (Collection Obj)Collection (IORef Obj)data Obj {field::IORef(Type)} )

4感觉功能最强大,但它似乎也创造了很多代码复杂性而在表现力方面没有太大的回报.


我有一个网店前面.我维护了一系列产品,其中包括库存数量和价格(等等).我还有一些对商店有信用的用户.

用户出现并选择3个产品购买并使用商店信用结账.我需要创建一个新产品集合,其中有3个产品的库存量减少,创建一个新的用户集合,用户帐户借记.

这意味着我得到以下内容:

checkout :: Cart -> ProductsCol -> UserCol -> (ProductsCol, UserCol)
Run Code Online (Sandbox Code Playgroud)

但是生活变得更复杂,我需要处理税收:

checkout :: Cart -> ProductsCol -> UserCol -> TaxCol 
            -> (ProductsCol, UserCol, TaxCol)
Run Code Online (Sandbox Code Playgroud)

然后我需要确保将订单添加到发货队列:

checkout :: Cart 
         -> ProductsCol 
         -> UserCol 
         -> TaxCol
         -> ShipList
         -> (ProductsCol, UserCol, TaxCol, ShipList)
Run Code Online (Sandbox Code Playgroud)

等等...

我想写的是类似的东西

checkout …
Run Code Online (Sandbox Code Playgroud)

haskell data-modeling ioref

4
推荐指数
1
解决办法
124
查看次数

如何在Symfony2项目中删除实体类

最初设计项目时,我们有几个实体到目前为止尚未使用(并且我们不打算在不久的将来实现它们)。嗯,我想从我的项目中删除它们。我将这样进行(手动执行所有步骤):

  1. 从我当前使用的实体中删除所有关系。
  2. 删除doctrime ORM文件 src/Resources/config/doctrine
  3. 从中删除类PHP文件 src/Entity
  4. 从数据库中删除表

我想知道的是:是否有任何例程(例如控制台命令)可以支持此过程?例如,如果我跑步

php app/console doctrine:schema:update --dump-sql
Run Code Online (Sandbox Code Playgroud)

删除所有关系并删除文件后,得到删除相应表的SQL语句吗?

php data-modeling symfony doctrine-orm

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

Rails多表继承,多态关联或单表继承?

我正在尝试在Rails(ActiveRecord)中实现OpenEHR参考模型,但我发现了一些问题,因为它适用于许多不同的classess,

这是一个组成图:

组成图

正如你所看到的,很多类"继承"了一些属性LocatablePathable*(整个引用很大,几乎每个类都继承自它).

此外,它建立data_types作为其他类,例如在同一组合类中,language是类CODE_PHRASE,具有两个属性(链接).

因此我遇到两个问题:1)如何从抽象类继承属性,以及2)我如何"包含"所需的"类".

对于我在使用多态关联时遇到的第一个问题.

对于第二个,我想用STI,但我发现快了很多,几乎同类机型的(它们是完全一样的实际): ,CompositionLanguage,CompositionTerritory,EntrySetting,EntryEncoding我只在使用type属性为"反向链接",例如:组合类最多可以有三个属性CODE_PHRASE,因为所有三个引用都有不同的属性(语言,区域和类别),我认为我需要知道关联(知道Composition有3个code_phrases,但是没有意义,但是我不知道哪一个是相应的属性).另一方面,Entry类,具有settingencoding属性(链接).

我意识到可能有不同的方法,但我真的想知道是否可能是Rails(或ActiveRecord).或者,也许我错过了概念信息.

activerecord model ruby-on-rails data-modeling openehr

4
推荐指数
1
解决办法
338
查看次数

Aerospike数据建模和查询

可以说我在JAVA中有以下模型

class Shape {
    String type;
    String color;
    String size;
}
Run Code Online (Sandbox Code Playgroud)

并说我有以下基于上述模型的数据.

Triangle, Blue, Small
Triangle, Red, Large
Circle, Blue, Small
Circle, Blue, Medium
Square, Green, Medium
Star, Blue, Large
Run Code Online (Sandbox Code Playgroud)

我想回答以下问题

Given the type Circle how many unique colors?
    Answer: 1
Given the type Circle how many unique sizes?
    Answer: 2

Given the color Blue how many unique shapes?
    Answer: 2
Given the color Blue how many unique sizes?
    Answer: 3

Given the size Small how many unique shapes?
    Answer: …
Run Code Online (Sandbox Code Playgroud)

data-modeling nosql aerospike

4
推荐指数
1
解决办法
206
查看次数