代码之家  ›  专栏  ›  技术社区  ›  robjmills

NoSQL用例[关闭]

  •  142
  • robjmills  · 技术社区  · 15 年前

    NoSQL近年来在我国业界受到了广泛的关注。我真的很感兴趣的是人们对它在关系数据库存储上的最佳使用案例的看法。什么会让开发人员认为特定的数据集更适合NoSQL解决方案。我特别感兴趣的是 MongoDB CouchDB 因为他们似乎在PHP开发方面得到了最多的报道,这是我的重点。

    9 回复  |  直到 7 年前
        1
  •  86
  •   spacemonkey    15 年前

    只要向自己保证,您永远不会尝试将关系数据模型映射到NoSQL数据库,如MongoDB或CouchDB。。。这是开发人员在评估新兴技术时最常见的错误。

    这种方法类似于开车,并试图用它来拉你的车在路上像一匹马。

    当然,由于每个人的经验,这是一种自然的反应,但是使用文档数据库的真正价值在于能够简化您的数据模型并将您作为开发人员的痛苦降到最低。你的代码库会缩小,你的bug会减少,更容易找到,性能会很好,规模会简单得多。

    作为Joomla的创始人,我有偏见:-)但是来自CMS领域,MongoDB是一个银弹,因为内容很自然地映射到文档系统。

    MongoDB的另一个很好的例子是实时分析,因为MongoDB具有非常强大的性能和规模,特别是在并发性方面。MongoDB.org网站上有一些案例研究可以证明这些属性。

    我同意这样的观点:每个数据库都有自己的目标和用例;对每个数据库进行相应的评估。

        2
  •  49
  •   Dan Dascalescu    10 年前

    MongoDB站点上提到了一些很好的用例(不管怎样,对于MongoDB来说)。给出的例子是实时分析、日志记录和全文搜索。这些文章都很值得一读 http://www.mongodb.com/use-cases

    关于哪种NoSQL数据库最适合哪种类型的项目,还有一个很好的总结: http://kkovacs.eu/cassandra-vs-mongodb-vs-couchdb-vs-redis

        3
  •  15
  •   petabyte    15 年前

    我建议Rick Cattell撰写这篇关于杂项数据存储(又称NoSQL)的文章,它们的区别和一些用例: http://www.cattell.net/datastores/index.html

        4
  •  8
  •   ysimonson    15 年前

    我喜欢NoSQL的地方与性能无关,一切都与可用性有关。当您的原子数据单元类似于文档时,文档存储更容易使用,因为序列化对象和对象之间的关系很简单。它只是更有趣,这是一个重要的因素,个人或副业项目。

        5
  •  8
  •   Moppo    8 年前

    A 伟大的用例 对于NoSQL数据库是 统计学 和/或 报告生成 尤其是从第三方来源提供数据时。

    举个例子来说, :

    蒙哥达 很漂亮 和更新 JSON 在数据库中;例如,使用命令行 mongoimport 效用

    在这一点上是非常重要的 通过过滤和分组,这非常适合这种应用程序。

    例如,使用 Aggregation Framework

    $pipeline = [];
    
    //filter by date
    $pipeline[] = [ '$match' => [ 'created_at' => [ '$gte' => $starDate, '$lte' => $endDate ]  ]  ];
    
    //if we want to filter by a specific field, we add the filter to the pipeline array
    if( $filters->isFilterByField() )
        $pipeline[] = [ '$match' => [ 'field' => $fieldValue ] ];    
    
    //group the results by date and get the count
    $pipeline[] = [ '$group' => [ '_id' => '$created_at', 'num_elements' => [ '$sum' => 1 ] ] ];
    
    return $collection->aggretate( $pipeline );
    

    我想指出 轻松 手动添加/删除过滤器 字符串串联以建立查询。使用这种方法,按常规方式添加/删除过滤器与添加/删除过滤器一样简单

    另一个巨大的好处来自这样一个事实:像这样的解决方案很可能是 比使用 , 在这里,我们必须与不同的表进行连接,以获得所需的所有数据

    此外,这个用例是最佳的,因为 避免所有主要限制 NoSQL数据库的名称:

    • 缺少交易: 应用程序不执行写操作,只执行读操作,所以我们根本不需要事务

    • 表之间缺少联接: 我们不需要连接,因为我们可以使用 非规范化数据 在收藏中。

    存储数据 在一个 符合我们要求的方式

        6
  •  3
  •   user3631881    9 年前

    https://www.youtube.com/watch?v=qI_g07C_Q5I

    摘要: Martin快速介绍了NoSQL数据库:它们来自何处,它们所使用的数据模型的性质,以及考虑一致性的不同方式。由此,他概述了应该考虑使用它们的情况,为什么它们不会使关系数据库过时,以及polyglot持久性的重要后果。

    它很好地描述了NoSQL是什么,不同的类别,以及每个人在来自关系数据库世界时必须理解的事情。

        7
  •  3
  •   Ravindra babu    9 年前

    首先,您必须了解CAP(一致性、可用性和分区,其中您必须学习三者中的两个)理论和我们的业务用例。MongoDB满足一致性和分区;沙发DB满足可用性和;分区。

    youtube上关于NoSQL的Edureka视频是最好的视频教程之一。

    https://www.youtube.com/watch?v=gJFG04Sy6NY

    https://www.youtube.com/watch?v=KSq6tMMXZ8s

    https://www.youtube.com/watch?v=3z1KFA2qcSo

    优秀的演示文稿可以在slideshare.net中找到

    http://www.slideshare.net/quipo/nosql-databases-why-what-and-when?qid=3bb9f7f6-a53d-41b1-8403-cd6f181d0ca7&v=qf1&b=&from_search=1

    http://www.slideshare.net/EdurekaIN/no-sql-databases-35591065?qid=f1b9c095-6d70-4d0a-91da-1df664c4f389&v=qf1&b=&from_search=3 (此演示支持youtube中的视频教程)

        8
  •  1
  •   metdos    12 年前

    对于您需要的某些用例,特别是对于分析查询,您可以在MongoDB上运行SQL查询 this wrapper 从博士后那里。

        9
  •  1
  •   Austin Gonyou    10 年前

    因为现在市场上的NoSQL数据库比以往任何时候都要多,如果您正在寻找一个基于支持、可扩展性、管理和成本的数据库,那么我建议您看看Gartner幻方图。

    http://www.gartner.com/technology/reprints.do?id=1-23A415Q&ct=141020&st=sb

    我想建议Couchbase给那些还没有尝试过它的人,但不是基于报告中显示的版本(2.5.1),因为它比CB Server现在的版本落后了近2个版本,在2H15中接近4.0的版本。

    http://www.couchbase.com/coming-in-couchbase-server-4-0

    Couchbase作为一个供应商/产品的另一部分是它是一个多用途的DB类型。它可以作为一个纯K/V存储、面向文档的数据库,具有多维伸缩性、Memcached、cache-aside和持久性,并支持符合ANSI 92的SQL自动连接、只需按下一个按钮即可复制到灾难恢复群集,甚至在生态系统中内置了一个移动组件。

    如果没有别的,那么值得一看最新的基准测试:

    http://info.couchbase.com/Benchmark_MongoDB_VS_CouchbaseServer_HPW_BM.html http://info.couchbase.com/NoSQL-Technical-Comparison-Report.html