我有一个应用程序可以通过各种方法和各种格式接收数据.我有可插拔的接收器,以某种方式获取数据(例如通过轮询邮箱,监听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领域的适当类型是什么?Object?InputStream?Byte[]?
有一个过期DVD租赁报告表.商店有同一张DVD的多个副本(它们都被编号以便识别).如何规范化此数据以满足3NF要求?
规范化http://img193.imageshack.us/img193/7804/normalization.jpg
如果现在重要的是我正在使用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一样,每个帖子一票,并且可以有逆转.没关系我对柜台的意思.
我有一个名为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)我可以使用什么代码来获取数组或出来?
谢谢!抢
在建模数据仓库时,我们是否应该支持Data Vault而不是Dimensional建模?这两者之间的主要区别是什么?
我一直在使用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) 我想在数据库(MySQL)中存储视频视图计数
我想存储每个访问者的IP地址(以及其他一些信息)
所以我用(VidoId,Ip,Date,UserAgent)创建了一个表
现在我的问题是每次我想要显示视图计数我必须执行此查询:
SELECT Count(*) FROM Views WHERE VideoId = xxx
Run Code Online (Sandbox Code Playgroud)
我知道我可以将它存储在我的视频表的一列中,并在每个插页上更新它.但这会产生碎片并且一致地破坏数据,也不可能用EER对其进行建模.我也知道我可以缓存它.
我只是想知道有没有办法有效地和可模拟地做到这一点?
谢谢.
我知道这里有很多时间序列问题,但我似乎并不适合给定的解决方案.我也是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) 我正在研究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)
用例是:
我是Cassandra的新手,所以我读了十几篇关于它的文章,因此我了解了基础知识.所有教程都显示了1或2列和时间范围的高效数据检索.如果您有更多条件,我找不到的是如何正确建模您的数据.
我有一个大型事件规范化数据库,有很多列,说:
我需要能够按所有列进行查询.所以在RDBMS中我会查询:
SELECT email FROM table WHERE time > X AND user_age BETWEEN X AND X AND user_language = 'nl' 等等..
我知道我可以为每列创建一个单独的表,但是我仍然需要将结果组合起来.也许这不是一个坏方法,但我怀疑它,因为没有子查询.
我的问题显然是,如何在Cassandra中正确建模这种数据?
非常感谢!
data-modeling ×10
cassandra ×3
database ×3
mysql ×2
nosql ×2
sql ×2
c# ×1
cocoa ×1
core-data ×1
cql ×1
cql3 ×1
data-vault ×1
datastax ×1
erd ×1
java ×1
mongodb ×1
objective-c ×1
time-series ×1
xcode ×1