标签: data-modeling

我用哪种类型来表示Java中的任意blob?

我有一个应用程序可以通过各种方法和各种格式接收数据.我有可插拔的接收器,以某种方式获取数据(例如通过轮询邮箱,监听HTTP请求,监视目录的内容等),将其与MIME类型相关联,然后将其传递给包装如下:

public class Transmission {
    private String origin;      // where the data came from
    private String destination; // where the data was sent to
    private String mime;        // the MIME type of the data
    private BLOB data;          // this is what I need an appropriate type for
}
Run Code Online (Sandbox Code Playgroud)

在线下,数据由专业处理程序根据mime字段的值进行处理.我期待像ZIP文件,Excel文档,SOAP,通用XML,纯文本等等.此时,代码应该与数据中的内容无关.这个data领域的适当类型是什么?ObjectInputStreamByte[]

java data-modeling

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

3NF数据库规范化

有一个过期DVD租赁报告表.商店有同一张DVD的多个副本(它们都被编号以便识别).如何规范化此数据以满足3NF要求?

规范化http://img193.imageshack.us/img193/7804/normalization.jpg

sql database database-design data-modeling normalization

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

论坛帖子投票/观看的数据库模式,以及递增和显示视图数量的策略

如果现在重要的是我正在使用MySQL/MyISAM,但我愿意使用PostgreSQL.我也愿意使用memcached.

考虑一个用于存储论坛帖子的表格:

id forum_name post_date
1  Hey!       2009-01-01 12:00:00
Run Code Online (Sandbox Code Playgroud)
  • 存储与线程相关的实体(如投票,视图和计数器)的最佳做法是什么?

我是不是该..

创建一个单独的表,如

id thread_id views
1  1         532
Run Code Online (Sandbox Code Playgroud)

或者将它保存为初始线程表中的列?

id forum_name post_date              views
1  Hey!       2009-01-01 12:00:00    532
Run Code Online (Sandbox Code Playgroud)

另一个相关的小窍门,显示和增加页面浏览量的实用解决方案是什么?我读了这个帖子,似乎我只能缓存一段时间的值,我对增量部分并不十分清楚 - 也许就像将值存储在某个地方的平面文件中,然后定期用cronjobs更新数据库论坛视图每小时左右?

编辑: 澄清一下,投票就像SO一样,每个帖子一票,并且可以有逆转.没关系我对柜台的意思.

mysql sql database-design data-modeling database-schema

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

获取属性作为NSManagedObject子类的属性

我有一个名为Team的NSManagedObject(NSMO)的子类.团队与另一个名为Contract的NSMO子类有一对多的关系.合同与玩家一对一(另一个NSMO).我想简化使用Team的代码,并且只能引用它的"玩家".玩家将成为与特定团队签订合同的一系列玩家.

我尝试在XCode的数据建模工具中创建一个名为players的fetched属性,但收效甚微.我尝试了很多不同的方法,但最有意义的方法是将其命名为"玩家",将目标命名为Player,最后将其作为我的谓词"contract.team.name == SELF".

在我的Team类中,我有一个名为players的NSArray属性(在实现中有@dynamic播放器).当我NSLog(@"%@",self.players)它退出...

Relationship fault for (<NSFetchedPropertyDescription: 0x6d19cd0>), name players, isOptional 1, isTransient 1, entity Team, renamingIdentifier players, validation predicates (
), warnings (
), versionHashModifier (null), fetchRequest <NSFetchRequest: 0x6d1a080> (entity: Player; predicate: (contract.team.name == SELF); sortDescriptors: ((null)); type: NSManagedObjectResultType; ) on 0x6d38550
Run Code Online (Sandbox Code Playgroud)

......对我来说毫无意义.我觉得我做了很多错事我甚至不知道从哪里开始处理它.

所以我想我的问题是1)这个获取属性应该在我的NSMO子类中假设什么类型.(我把它作为NSArray,但显然它是一个NSFetchedPropertyDescription)2)我可以使用什么代码来获取数组或出来?

谢谢!抢

xcode cocoa core-data data-modeling objective-c

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

Data Vault和Dimensional建模之间的差异?

在建模数据仓库时,我们是否应该支持Data Vault而不是Dimensional建模?这两者之间的主要区别是什么?

database-design data-modeling data-warehouse data-vault

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

MongoDB文档架构

我一直在使用MongoDB数据库层进行Web项目.我有一个特定的实体,我无法正确映射到文档数据库,认为最好得到一些反馈.

说,我有User和Item集合.用户可以喜欢或不喜欢的项目.项目中也有标签,用户也可以喜欢或不喜欢标签.我需要能够足够快地查找喜欢/不喜欢的计数.

我想出的是这样的(对于项目):

{
    name: "Item Name",
    statistics : {
        likes:      5,
        dislikes:   6
    },
    tags: [
        { name: "Foo", likes: 10, dislikes: 20 },
        { name: "Bar", likes: 5,  dislikes: 1  }
    ]
}
Run Code Online (Sandbox Code Playgroud)

这很不错.但问题是,我需要知道用户是否喜欢/不喜欢标签或项目.现在,我想出的是这样的:

{
    name: "Item Name",
    statistics : {
        likes:      5,
        dislikes:   6
    },
    tags: [
        { 
            name: "Foo", 
            likes: 2, 
            dislikes: 1,
            votes: [
                { user: "user1_id", vote: 1 }, //like 
                { user: "user2_id", vote: 1 }, //like 
                { user: "user3_id", vote: -1 }, //dislike …
Run Code Online (Sandbox Code Playgroud)

c# database data-modeling mongodb

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

将视图计数存储到数据库中

我想在数据库(MySQL)中存储视频视图计数

我想存储每个访问者的IP地址(以及其他一些信息)

所以我用(VidoId,Ip,Date,UserAgent)创建了一个表

现在我的问题是每次我想要显示视图计数我必须执行此查询:

SELECT Count(*) FROM Views WHERE VideoId = xxx
Run Code Online (Sandbox Code Playgroud)

我知道我可以将它存储在我的视频表的一列中,并在每个插页上更新它.但这会产生碎片并且一致地破坏数据,也不可能用EER对其进行建模.我也知道我可以缓存它.

我只是想知道有没有办法有效地和可模拟地做到这一点?

谢谢.

mysql erd data-modeling

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

卡桑德拉时间序列:允许过滤,桶或其他

我知道这里有很多时间序列问题,但我似乎并不适合给定的解决方案.我也是Cassandra的新手,所以我可能会用错误的心态接近这个.忍受我.

我收到以下表格中的搜索数据:

datetime_searched, term_used, product_found
Run Code Online (Sandbox Code Playgroud)

以及我想做的查询:

给定开始日期和结束日期,返回属于该时间窗口的所有术语 - 产品对.最初,窗口将持续一个月.这可能(读:会)改变.

例如,给出以下数据:

2013-11-20 00:00:00, "christmas", "decorated tree"
2014-12-01 20:00:00, "christmas", "wrapping paper"
2014-12-23 15:00:00, "christmas", "decorated tree" (duplicate term-product)
Run Code Online (Sandbox Code Playgroud)

以及对2014-12-01到2015-01-01时间范围的查询,我希望能够检索:

"christmas", "wrapping paper"
"christmas", "decorated tree"
Run Code Online (Sandbox Code Playgroud)

我的初始方法看起来像时间序列数据的大多数示例:

CREATE TABLE search_terms (
  datetime_searched timestamp,
  term_used text,
  product_found text,
  PRIMARY KEY (term_used, date_searched)
);

SELECT term_used, product_found
FROM search_terms 
WHERE datetime_searched > [start] 
AND datetime_searched < [end];
Run Code Online (Sandbox Code Playgroud)

但这需要我有二级索引和/或允许过滤,这似乎是我应该避免的,如果我只捕获一小部分被过滤的数据.

我的第二个想法是创建时间桶,但这个解决方案似乎只有在我将查询限制在桶时才有效.它似乎也创造了热点 - 在我最初的情况下,是一个长达一个月的热点.例如,对于每日桶:

CREATE TABLE search_terms_by_day (
  datetime_searched timestamp,
  day_searched timestamp,
  term_used text,
  product_found …
Run Code Online (Sandbox Code Playgroud)

database data-modeling time-series cql cassandra

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

Cassandra - 数据建模时间序列 - 避免"热点"?

我正在研究Cassandra数据模型来存储用户上传的记录.

潜在的问题是,一些用户可能在5分钟内上传50-100k行,这可能导致分区键(user_id)的"热点".(如果每个分区超过10k行,Datastax建议重新考虑数据模型).

如何避免在短时间内在分区键上记录太多?

我尝试过使用Datastax时间序列建议,但即使我有年,月,日,小时列,也可能会出现热点.

CREATE TABLE uploads (
    user_id text
   ,rec_id timeuuid
   ,rec_key text
   ,rec_value text
   ,PRIMARY KEY (user_id, rec_id)
);   
Run Code Online (Sandbox Code Playgroud)

用例是:

  • 通过user_id获取所有上传记录
  • 按日期范围范围搜索上传记录

data-modeling cassandra nosql datastax

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

具有多个条件的Cassandra数据模型

我是Cassandra的新手,所以我读了十几篇关于它的文章,因此我了解了基础知识.所有教程都显示了1或2列和时间范围的高效数据检索.如果您有更多条件,我找不到的是如何正确建模您的数据.

我有一个大型事件规范化数据库,有很多列,说:

  • 事件类型
  • 时间
  • 电子邮件
  • User_age
  • user_country
  • USER_LANGUAGE
  • 等等.

我需要能够按所有列进行查询.所以在RDBMS中我会查询:

SELECT email FROM table WHERE time > X AND user_age BETWEEN X AND X AND user_language = 'nl' 等等..

我知道我可以为每列创建一个单独的表,但是我仍然需要将结果组合起来.也许这不是一个坏方法,但我怀疑它,因为没有子查询.

我的问题显然是,如何在Cassandra中正确建模这种数据?

非常感谢!

data-modeling cassandra nosql cql3 cassandra-2.0

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