Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.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
来自mongodb shell的安全写入_Mongodb - Fatal编程技术网

来自mongodb shell的安全写入

来自mongodb shell的安全写入,mongodb,Mongodb,如何实现从javascript立即刷新到磁盘的“安全”写入?我希望能够从shell和存储的javascript“CRUD”过程中实现这一点。这仅仅是一个问题: db.foo.insert({stuff: "yes", meta: "physics"}); db.runCommand( "getlasterror" ) ; wiki对此不清楚。是的,您将使用,但您需要设置fsync标志(和/或,取决于您对“安全”的定义): 如果要进行多个写入,可以在最后一个写入之后请求fsync或复制。这将使以

如何实现从javascript立即刷新到磁盘的“安全”写入?我希望能够从shell和存储的javascript“CRUD”过程中实现这一点。这仅仅是一个问题:

db.foo.insert({stuff: "yes", meta: "physics"});
db.runCommand( "getlasterror" ) ;

wiki对此不清楚。

是的,您将使用,但您需要设置fsync标志(和/或,取决于您对“安全”的定义):


如果要进行多个写入,可以在最后一个写入之后请求fsync或复制。这将使以前的所有写入操作也“安全”(因为它们是按顺序应用的)。您不必为每一次写入支付费用(除非您需要它们单独安全,而不仅仅是作为一个集合)。

Thilo,我没有碎片,没有副本集,除了每天备份一次之外什么都没有,我会进行测试。“写入此服务器”是非常安全的。我知道“单服务器持久性”将出现在1.8版本中,但我实际上不确定这意味着什么。单服务器持久性意味着您不会在fsync之间丢失数据。这可能还意味着更快的数据库恢复(现在您只损失一分钟的数据,但数据库修复可能需要很多时间才能恢复联机)。在传统数据库(如Oracle)中,这是使用重做日志实现的:即使您没有在每次提交时将整个数据库同步到磁盘,您仍然可以写入足够的日志信息,以便能够重建丢失的内容。不过,不确定这是否是1.8版计划采用的方法。单服务器耐久性仍然要求您没有磁盘崩溃(它只能防止断电等)。如果丢失了磁盘,并且没有复制(或RAID),则会丢失自上次外部备份以来的所有数据。shell在每次插入后都会调用getlasterror,但不会自动刷新到磁盘。
# force fsync
> db.runCommand({getlasterror:1,fsync:true})

# wait for replication to one other server (w = 2)
> db.runCommand( { getlasterror : 1 , w : 2 } )