假设以下"模式/关系"设计,使用级联删除操作删除处理删除的推荐做法是什么?
关系模式:
+---------+ +--------+ | Student |-*--------1-[Enrollment]-1--------*-| Course | +---------+ +--------+
MongoDB的:
+---------+ +--------+ | Student |-*----------------*-| Course | +---------+ +--------+
考虑到学生的课程招生的这一经典设计,具有学生,反之亦然课程集合似乎使用MongoDB的(即没有为关系/报名表)时是合适的数据模型.但是来自关系世界我应该如何处理删除课程的语义?也就是说,当删除课程时,也应删除所有"注册"记录.也就是说,我应该从每个学生记录的集合中删除该课程.看起来我必须触发2个查询:一个用于删除课程,然后从每个学生的集合中删除它.有没有办法让单个查询执行这种"级联删除",如语义而无需额外的查询?数据模型是否需要更改?
注意:对于所有其他用例,上述数据模型工作正常:
=>只会删除该学生以及随之删除的相关课程集.=>的学生只需将其从学生课程集中删除即可=>只是将其添加到相应的"表格"中.唯一棘手的事情是处理删除课程.我应该如何处理MongoDB中的这种情况,因为我来自关系背景,我无法弄清楚这一点.
database database-design non-relational-database mongodb cascading-deletes
对于什么类型的要求,你会选择Apache Derby(或Java DB)而不是MySQL(反之亦然)?我环顾四周,人们只是比较两者,但没有人谈论何时考虑每一个.我正在使用Glassfish + Java/Restlet + MySQL开发基于Web的应用程序.
我希望这个系统有大约100-200个用户,在给定时间内大约有30-50个并发用户负载 - 主要是.
如果我想让网络应用程序可下载/可分发,我被告知要查看Derby.但这是我使用它的唯一原因吗?它适用于网络应用程序吗?有人用过吗?您的经验是什么,何时选择其中一个?(大多数关于比较的讨论都早于MySQL v5,因为它不支持存储过程,触发器等,但现在不再是这种情况).
我可以理解一个独立的数据库服务器模型,其中Web服务器发送请求,但是这个模型如何随嵌入式数据库而改变?或者是否默认在网络配置中使用Derby?
所以我知道一些相对的差异,即ResultSet与数据库有"开放连接",而RowSet以"断开连接"的方式工作.
但这几乎是我理解的(可能是不正确的:)
那么我的问题是 - 在什么情况下比另一种更可取?他们各自的优势/劣势是什么?
从我的感觉是RowSet,在断开模式下工作,特别是对于"只读"查询,在高度并发的系统中会有更好的性能.那是对的吗?如果是这样的话,可以说RowSet总是比ResultSet更适合只读查询吗?
如果我正确迭代RowSet不会抛出SQL异常,但这是一个好处吗?另一个是RowSet是可序列化的.但我担心的主要是从绩效角度来看会有什么选择呢?
有任何想法吗?我的知识中有一些缺失,显而易见:)
我问的原因是我想在实现Spring-Jdbc的ResultSetExtractor接口与在处理一些数据时返回SqlRowSet之间做出选择.这个问题让我很好奇如何决定什么时候选择,除了扔硬币:)
对于RESTful Web服务,我们说服务器不应该存储任何状态.现在,对于每个请求,"用户"必须经过身份验证,并且必须拥有他/她希望执行的操作的授权.
现在,每个请求都将包含该用户的授权数据.这是我的困惑:
假设主页上有登录名和密码字段.用户输入用户名/密码,该用户名/密码被发送回服务器,用户验证然后返回"某个令牌".现在,每个请求都会将此令牌发送到服务器.问题(S):
我可能误解了RESTful身份验证/授权的概念.但实际情况是,对于每个http请求,"服务"需要访问数据库以验证凭据吗?有没有什么东西可以简化这个过程,仍然坚持宁静的原则?我可以想到有一个存储细节的缓存,并且在服务器重启的情况下,它只是访问数据库.这只是一个可能使系统复杂化的性能优势(可能值得,不知道).这是唯一的解决方案吗?
因此,从REST的理论/概念角度(不是必要的实现)如何处理这个问题(如果它是一个问题)?您的专业经验如何处理这个问题以及Restful是如何处理的?
我们正在研究Restlet + J2EE + MySQL Restful Web服务,我弹出这个问题,但没有令人满意的答案(谷歌,Stackoverflow等)我知道HTTP的基本和摘要授权,但我不熟悉根据上述说明,存储/检索的内部结构.
java performance web-services restful-authentication restlet
我以前从未需要这样做,但由于两者都必须是构造函数中的"第一行",应该如何解决它?对于这样的情况,最好的重构是什么?
这是一个示例:
public class Agreement extends Postable {
public Agreement(User user, Data dataCovered)
{
super(user);
this(user,dataCovered,null);
}
public Agreement(User user,Data dataCovered, Price price)
{
super(user);
if(price!=null)
this.price = price;
this.dataCovered = dataCovered;
}
...
}
Run Code Online (Sandbox Code Playgroud)
呼吁super(user)是绝对必须的.在这种情况下如何处理"可选参数"?我能想到的唯一方法就是重复,即根本不要称之为(...).只需在每个构造函数中执行赋值.
我在考虑在backbone.js和jquery中编写一些UI测试.它们可能不是最好的方法,但它是我正在考虑的事情 - 通过简单的代码自动化测试而无需记录和回放.
使用这种方法让我头脑发热的唯一原因是:在某些"用例流程"中(执行时)会出现确认/警告对话框.我想点击"确定"并继续流程 - 这是否可以通过简单的JavaScript代码实现?怎么样?
注:我知道GUI测试的库中,但我想知道如何使用jQuery的刚/ javascript代码做到这一点,如果在所有可能的.
我通常认为这是node.js脚本/模块中的第一行以及phantomJS,casperJS等.我很好奇,如果这是服务器端javascript(SSJS)的常见模式(类似于#includeC/C++或import在Java)或者它是一个像RequireJS或LabJS这样的库被调用这个包含(我还没有机会在实践中使用它)?
例如var http = require('http')或var casper = require('casper').create()
我很好奇这是一个已经成为SSJS 标准化的模式,还是每个库/工具调用现有函数?
请原谅问题的n00b维度,但我想知道其无所不在背后的'为什么':)
我最近选择了PHP,它看起来很简洁,可以实现非常快速的Web应用程序开发(可能比我个人最喜欢的更快 - Java :)
现在,我不是PHP专家 - 无论是语言还是内部/细节.但是我的很多同行已经声称PHP应用程序不能很好地扩展 - 这是我无法为自己弄清楚的事实,因此也是问题.
我刚刚学习了PHP的程序性风格,我对非可伸缩性的唯一猜测是程序性与OO语言的可扩展性(C与C++/Java).我同意并且我可以看到这对于极其复杂的Web应用程序来说将是一个障碍.但是,我知道OO-ness进入PHP世界并且不认为这是一个很大的障碍(如果我的假设不正确,请纠正我).
除此之外,我不明白具有大量用户的Web应用程序会出现什么样的可伸缩性问题(为了讨论,我们假设一个Restful设计 - 没有会话 - 因为我知道这会阻碍可伸缩性).如果可能的话,我更有兴趣了解这种主张的"客观"原因.主观性很好,但我不是在这里开始讨论PHP与其他一切.我只想知道我必须记住这种语言的潜在局限性,如果/当Web应用程序每天(或小时)有1000个用户时,我不应该在后面咬我.
我有一些预处理与一些现有的.yml文件 - 但是,其中一些嵌入了Jinja模板语法:
A:
B:
- ip: 1.2.3.4
- myArray:
- {{ jinja.variable }}
- val1
- val2
Run Code Online (Sandbox Code Playgroud)
我想在这个文件中读取,并添加val3下myArray这样:
A:
B:
- ip: 1.2.3.4
- myArray:
- {{ jinja.variable }}
- val1
- val2
- val 3
Run Code Online (Sandbox Code Playgroud)
我试着手动写出jinja模板,但是他们用单引号写了: '{{ jinja.variable }}'
对于我来说,阅读这些.yml文件并修改它们的推荐方法是什么,尽管有预先存在的Jinja语法?我想向这些文件添加信息,保持其他所有相同.
我在Python 2.7+上使用PyYAML尝试了上述内容
java ×3
javascript ×2
c ×1
c++ ×1
click ×1
constructor ×1
database ×1
derby ×1
jdbc ×1
jinja2 ×1
jquery ×1
linux ×1
mongodb ×1
mysql ×1
performance ×1
php ×1
posix ×1
pthreads ×1
python ×1
python-2.7 ×1
require ×1
restlet ×1
rowset ×1
scalability ×1
spring ×1
spring-jdbc ×1
superclass ×1
testing ×1
web-services ×1
yaml ×1