小编PhD*_*PhD的帖子

对于N:M关系,MongoDB中级联删除的推荐等价物是什么?

假设以下"模式/关系"设计,使用级联删除操作删除处理删除的推荐做法是什么?

关系模式:

  +---------+                                    +--------+
  | Student |-*--------1-[Enrollment]-1--------*-| Course |
  +---------+                                    +--------+

MongoDB的:

  +---------+                    +--------+
  | Student |-*----------------*-| Course |
  +---------+                    +--------+

考虑到学生的课程招生的这一经典设计,具有学生,反之亦然课程集合似乎使用MongoDB的(即没有为关系/报名表)时是合适的数据模型.但是来自关系世界我应该如何处理删除课程的语义?也就是说,当删除课程时,也应删除所有"注册"记录.也就是说,我应该从每个学生记录的集合中删除该课程.看起来我必须触发2个查询:一个用于删除课程,然后从每个学生的集合中删除它.有没有办法让单个查询执行这种"级联删除",如语义而无需额外的查询?数据模型是否需要更改?

注意:对于所有其他用例,上述数据模型工作正常:

  • 删除学生=>只会删除该学生以及随之删除的相关课程集.
  • 愿意放弃课程=>的学生只需将其从学生课程集中删除即可
  • 添加学生/课程=>只是将其添加到相应的"表格"中.

唯一棘手的事情是处理删除课程.我应该如何处理MongoDB中的这种情况,因为我来自关系背景,我无法弄清楚这一点.

database database-design non-relational-database mongodb cascading-deletes

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

德比或MySQL还是......?

对于什么类型的要求,你会选择Apache Derby(或Java DB)而不是MySQL(反之亦然)?我环顾四周,人们只是比较两者,但没有人谈论何时考虑每一个.我正在使用Glassfish + Java/Restlet + MySQL开发基于Web的应用程序.

我希望这个系统有大约100-200个用户,在给定时间内大约有30-50个并发用户负载 - 主要是.

如果我想让网络应用程序可下载/可分发,我被告知要查看Derby.但这是我使用它的唯一原因吗?它适用于网络应用程序吗?有人用过吗?您的经验是什么,何时选择其中一个?(大多数关于比较的讨论都早于MySQL v5,因为它不支持存储过程,触发器等,但现在不再是这种情况).

我可以理解一个独立的数据库服务器模型,其中Web服务器发送请求,但是这个模型如何随嵌入式数据库而改变?或者是否默认在网络配置中使用Derby?

mysql derby

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

JDBC Resultset vs Rowset可以选择哪一个?

所以我知道一些相对的差异,即ResultSet与数据库有"开放连接",而RowSet以"断开连接"的方式工作.

但这几乎是我理解的(可能是不正确的:)

那么我的问题是 - 在什么情况下比另一种更可取?他们各自的优势/劣势是什么?

  • 从我的感觉是RowSet,在断开模式下工作,特别是对于"只读"查询,在高度并发的系统中会有更好的性能.那是对的吗?如果是这样的话,可以说RowSet总是比ResultSet更适合只读查询吗?

  • 如果我正确迭代RowSet不会抛出SQL异常,但这是一个好处吗?另一个是RowSet是可序列化的.但我担心的主要是从绩效角度来看会有什么选择呢?

  • 但它对读写查询是否重要?您可以将ResultSet同步回数据库吗?(我不确定这是否可能(它可能是,我只是不能回忆起来或谷歌它足够好:)已经有一段时间与原始JDBC ...

有任何想法吗?我的知识中有一些缺失,显而易见:)

我问的原因是我想在实现Spring-Jdbc的ResultSetExtractor接口与在处理一些数据时返回SqlRowSet之间做出选择.这个问题让我很好奇如何决定什么时候选择,除了扔硬币:)

java spring jdbc spring-jdbc rowset

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

Posix线程教程

我正在寻找一个全面的pthread教程.我考虑用posix线程购买编程,但这本书似乎有点过时了.像这样的其他在线教程非常基础.有人可以建议一个完整的pthread教程.

c c++ linux posix pthreads

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

RESTful身份验证 - 在高负载下导致性能不佳?

对于RESTful Web服务,我们说服务器不应该存储任何状态.现在,对于每个请求,"用户"必须经过身份验证,并且必须拥有他/她希望执行的操作的授权.

现在,每个请求都将包含该用户的授权数据.这是我的困惑:

假设主页上有登录名和密码字段.用户输入用户名/密码,该用户名/密码被发送回服务器,用户验证然后返回"某个令牌".现在,每个请求都会将此令牌发送到服务器.问题(S):

  • 后端数据库是否需要有一个单独的表来存储由用户名索引的这些令牌?
  • 假设令牌存储在DB中,则每个请求都需要进行DB调用.这是否会导致DB服务器在高负载时成为瓶颈?
  • 如果令牌没有真正存储在DB中,那么存储它的最佳"安静"位置是什么?
  • 会议可能不安宁,但后来我没有看到如何扩展身份验证/授权(如上所述)?
  • 如果它不是令牌,那么用户名/密码是否需要回传?(听起来像个坏主意:)

我可能误解了RESTful身份验证/授权的概念.但实际情况是,对于每个http请求,"服务"需要访问数据库以验证凭据吗?有没有什么东西可以简化这个过程,仍然坚持宁静的原则?我可以想到有一个存储细节的缓存,并且在服务器重启的情况下,它只是访问数据库.这只是一个可能使系统复杂化的性能优势(可能值得,不知道).这是唯一的解决方案吗?

因此,从REST的理论/概念角度(不是必要的实现)如何处理这个问题(如果它是一个问题)?您的专业经验如何处理这个问题以及Restful是如何处理的?

我们正在研究Restlet + J2EE + MySQL Restful Web服务,我弹出这个问题,但没有令人满意的答案(谷歌,Stackoverflow等)我知道HTTP的基本和摘要授权,但我不熟悉根据上述说明,存储/检索的内部结构.

java performance web-services restful-authentication restlet

15
推荐指数
1
解决办法
3810
查看次数

如果重载构造函数,如何调用super(...)和this(...)?

我以前从未需要这样做,但由于两者都必须是构造函数中的"第一行",应该如何解决它?对于这样的情况,最好的重构是什么?

这是一个示例:

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)是绝对必须的.在这种情况下如何处理"可选参数"?我能想到的唯一方法就是重复,即根本不要称之为(...).只需在每个构造函数中执行赋值.

java constructor superclass

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

在警报上单击"确定"或通过jquery/javascript确认对话框?

我在考虑在backbone.js和jquery中编写一些UI测试.它们可能不是最好的方法,但它是我正在考虑的事情 - 通过简单的代码自动化测试而无需记录和回放.

使用这种方法让我头脑发热的唯一原因是:在某些"用例流程"中(执行时)会出现确认/警告对话框.我想点击"确定"并继续流程 - 这是否可以通过简单的JavaScript代码实现?怎么样?

注:我知道GUI测试的库中,但我想知道如何使用jQuery的刚/ javascript代码做到这一点,如果在所有可能的.

javascript testing jquery automated-tests click

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

'require(...)'是一个常见的javascript模式还是库函数?

我通常认为这是node.js脚本/模块中的第一行以及phantomJS,casperJS等.我很好奇,如果这是服务器端javascript(SSJS)的常见模式(类似于#includeC/C++或import在Java)或者它是一个像RequireJS或LabJS这样的库被调用这个包含(我还没有机会在实践中使用它)?

例如var http = require('http')var casper = require('casper').create()

我很好奇这是一个已经成为SSJS 标准化的模式,还是每个库/工具调用现有函数?

请原谅问题的n00b维度,但我想知道其无所不在背后的'为什么':)

javascript require

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

声明"PHP不能扩展(好)"背后的理由是什么?

我最近选择了PHP,它看起来很简洁,可以实现非常快速的Web应用程序开发(可能比我个人最喜欢的更快 - Java :)

现在,我不是PHP专家 - 无论是语言还是内部/细节.但是我的很多同行已经声称PHP应用程序不能很好地扩展 - 这是我无法为自己弄清楚的事实,因此也是问题.

我刚刚学习了PHP的程序性风格,我对非可伸缩性的唯一猜测是程序性与OO语言的可扩展性(C与C++/Java).我同意并且我可以看到这对于极其复杂的Web应用程序来说将是一个障碍.但是,我知道OO-ness进入PHP世界并且不认为这是一个很大的障碍(如果我的假设不正确,请纠正我).

除此之外,我不明白具有大量用户的Web应用程序会出现什么样的可伸缩性问题(为了讨论,我们假设一个Restful设计 - 没有会话 - 因为我知道这会阻碍可伸缩性).如果可能的话,我更有兴趣了解这种主张的"客观"原因.主观性很好,但我不是在这里开始讨论PHP与其他一切.我只想知道我必须记住这种语言的潜在局限性,如果/当Web应用程序每天(或小时)有1000个用户时,我不应该在后面咬我.

php scalability

10
推荐指数
1
解决办法
2451
查看次数

如何使用Python更新.yml文件,忽略已有的Jinja语法?

我有一些预处理与一些现有的.yml文件 - 但是,其中一些嵌入了Jinja模板语法:

A:
 B:
 - ip: 1.2.3.4
 - myArray:
   - {{ jinja.variable }}
   - val1
   - val2
Run Code Online (Sandbox Code Playgroud)

我想在这个文件中读取,并添加val3myArray这样:

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尝试了上述内容

python yaml jinja2 python-2.7

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