Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.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
Database 嵌入式couchDB_Database_Performance_Nosql_Replication_Couchdb - Fatal编程技术网

Database 嵌入式couchDB

Database 嵌入式couchDB,database,performance,nosql,replication,couchdb,Database,Performance,Nosql,Replication,Couchdb,CouchDB很棒,我喜欢它的p2p复制功能,但它有点大(因为我们必须安装Erlang),在桌面应用程序中使用时速度较慢 当我在英特尔双核cpu上测试时 12秒加载10000个文档 插入10000个文档需要10秒,但更新视图需要20秒,所以总共需要30秒 是否没有任何SQL实现具有相同的p2p复制功能,但其大小与sqlite非常相似,而且速度相当快(1秒可加载10000个文档)。不幸的是,该问题没有提供足够的应用程序需求细节,因此很难提供建议。无论如何,我不知道还有任何其他存储解决方案提供类似的

CouchDB很棒,我喜欢它的p2p复制功能,但它有点大(因为我们必须安装Erlang),在桌面应用程序中使用时速度较慢

当我在英特尔双核cpu上测试时

  • 12秒加载10000个文档
  • 插入10000个文档需要10秒,但更新视图需要20秒,所以总共需要30秒

  • 是否没有任何SQL实现具有相同的p2p复制功能,但其大小与sqlite非常相似,而且速度相当快(1秒可加载10000个文档)。

    不幸的是,该问题没有提供足够的应用程序需求细节,因此很难提供建议。无论如何,我不知道还有任何其他存储解决方案提供类似的/高级P2P复制

    关于您的要求,有几个问题/意见:

  • 什么样的桌面应用程序需要每秒10000次插入
  • 当你说尺寸时,你指的是什么
  • 您可能想看看:

    • 雷迪斯
    • 乌鸦

    还可以根据您的应用程序要求检查上列出的其他一些NoSQL解决方案。

    您是否尝试过使用气垫船和/或Erlang view服务器?我有一个类似的问题,并且发现呆在ErlangVM内(从而避免到SpiderMonkey的漫游)给了我所需要的提升。我做了三件事

  • 增强查询:将mapreduce函数从js移植到“本机”Erlang通常会在查询时极大地提高性能(http://wiki.apache.org/couchdb/EnableErlangViews). 此外,管理视图更容易,因为您可以调用外部lib或自己编译的模块(只需将它们添加到您的ebin目录中),从而减少开发过程中需要进行的上载次数

  • 增强插入:使用气垫船插入可提高高达X100的性能(https://github.com/jchris/hovercraft.)这在CouchDB的书中提到过(http://guide.couchdb.org/draft/performance.html)

  • 预运行视图:对于桌面应用程序,您可以做的最后一件事是在应用程序启动期间运行视图(例如,当启动屏幕显示时)。第一次运行视图总是最慢的,后续运行会更快

  • 这些对我帮助很大

    • 爱德蒙-

    嗨,阿列克斯波佩斯库,我更新了问题!我们需要在几秒钟内加载所有文档,以便我们可以对它们进行分组、排序和快速搜索。sqlite可以提供这样的性能,假设传输的大小是相同的。嗨,edmond,在c#中如何调用气垫船?你可以编写一个API,但我认为你不会受益太多。上面列出的技术的目的是尽可能多地使用Erlang(CouchDB是用Erlang编写的。)具体来说,就是保持在Erlang VM中。性能提升来自于避免套接字通信和更好的对齐垃圾:被切断。。。你可以编写一个API,但我认为你不会受益匪浅。上面列出的技术的目的是尽可能多地使用Erlang(CouchDB是用Erlang编写的。)具体来说,就是保持在Erlang VM中。性能提升来自:1)避免与JavaScript引擎的管道通信;2) 避免套接字通信;3) 更好地将您的mapreduce函数与Erlang的自然并发优势结合起来。这些目标可以通过使用Erlang视图服务器(用于查询)和气垫船(用于插入)来实现。底线:根据我的经验,如果你想让CouchDB运行得更快,你需要转向Erlang,而不是JS和其他语言。顺其自然,而不是逆其而行。