Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用Morphia测试MongoDB聚类_Mongodb_Cluster Computing_Morphia - Fatal编程技术网

用Morphia测试MongoDB聚类

用Morphia测试MongoDB聚类,mongodb,cluster-computing,morphia,Mongodb,Cluster Computing,Morphia,我一直在副本集配置中试用MongoDB,看看它是如何扩展/执行/处理的 我一直在使用(顶部的POJO映射层)将10000个简单的随机文档持久化到单个集合中。我已经用@Entity(concern=“replications\u SAFE”)注释了我的POJO(MyData,在下面的代码片段中),希望发送到数据库的数据能够安全地持久化 我的POJO由ObjectId字段(Mongo的主键类型)、一个String随机长度的随机字符(最多20个字符)和一个long使用random.nextLong()

我一直在副本集配置中试用MongoDB,看看它是如何扩展/执行/处理的

我一直在使用(顶部的POJO映射层)将10000个简单的随机文档持久化到单个集合中。我已经用
@Entity(concern=“replications\u SAFE”)
注释了我的POJO(
MyData
,在下面的代码片段中),希望发送到数据库的数据能够安全地持久化

我的POJO由
ObjectId
字段(Mongo的主键类型)、一个
String
随机长度的随机字符(最多20个字符)和一个
long
使用
random.nextLong()
生成

我的代码如下:

for (int i=0;i<10000;i++) {
    final MyData data = new MyData();

    boolean written = false;
    do {
        try {
        ds.save(data); //ds is of type DataStore
        written=true;
        } catch (Exception e) {
            continue;
        }
    }
    while (!written);
}

for(inti=0;iMongoDB现在肯定在很多地方“黄金时段”使用。因此,值得一看这里还可能发生了什么

这里有几个初步问题:

  • “new MyData()”是如何工作的?是否有可能您正在敲打现有的ID
  • 您的复制副本是否在整个过程中设置了“设置”?您只是在错误上“继续”,所以我不确定如何处理错误。Morphia是否正确地冒泡错误
  • 我真的很感激您已经完成并编写了一种“测试用例”,但我认为您需要对该用例进行更深入的挖掘

  • MyData
    上的
    \u id
    设置为
    i
    。这样你就可以看到你在这个过程中死亡的位置
  • 执行
    控制台。每次出现错误时都编写
    或等效代码。查看是否无法找出数据实际去向
  • 用同样的方法做一个
    控制台。在每次成功保存时写入
  • 如果您执行这些步骤,您将获得一个正在发生的事情的日志,您将能够看到保存或未保存的内容,并将其与数据库中的数据进行比较

    我知道这有点乏味,但我认为您有两个问题之一,执行这些步骤将有助于解决这一问题

    或者 1.Morphia未正确报告错误(未正确处理) 2.您发现副本集存在实际问题 3.你正被“最终一致性”所困扰


    不管是哪种方式,如果有更多的细节,我们应该能够深入研究这个问题。

    谢谢你的回答,很抱歉没有提前回复,疾病和假期都在妨碍我们-我完全打算在新的一年里跟进这个问题!嘿,我知道假期。如果这个测试相对简单,你也可以尝试发布一个c一组GIST,可以让其他人重新调整您的操作。应该有两个脚本:一个脚本显示您的启动过程,另一个脚本显示您的更新/测试用例。