2014-02-19 91 views
0

我在RDBMS(Oracle,MySQL,PostgreSQL)中工作了10多年。 这是在一个价格...设计基于nosql的应用程序

我深入钻研nodejs平台和切换使用NoSQL DB在我最近的项目(主要是mongoDB)。我个人的经验是,NoSQL在增量敏捷编程方面更加灵活。

你们可以指点我一些关于如何设计NoSQL数据库的好信息吗?没有关于如何创建mongo用户数据库的教程,或者如何访问couchbase,但是有一些基本的设计原则。

例如,我在设计关系时总是感到紧张。假设我有两种用户,一种类型的用户可以创建“子用户”(考虑店主和员工)。然后会有一些对象与这些用户有关。我是否保存用户的对象本身或ID,或者什么...

换句话说如何在使用NoSQL时不考虑关系?

回答

0

这真的归结于你的用例。没有“我只使用SQL数据库”,“我只使用NoSQL数据库”;它们都是适用于您的用例的工具,并且有其优点和缺点。即使在NoSQL的世界中,你也会发现不同数据库之间的差异,最好的选择是基于你正在解决的问题。

当人们使用NoSQL时,大部分时间都是因为他们正在做更多的文档存储或者不适合RDBM模型的东西(想想那些在表中存储BLOB/CLOB的人);另一个原因是规模,他们觉得他们无法扩大到他们需要的规模,以及RDBM模型带来的所有开销和限制。然而,在事物规模方面,有SQL选项的解决方案,这些“NewSQL”选项中的许多最近都已经出现。

是什么促使你看NoSQL?教育/只是普遍的兴趣?还是你有一个目前的问题,你正在工作,并觉得NoSQL是解决这个问题的方法?还是一个新问题,并相信NoSQL是解决方案?问题是什么决定工具。

关于NoSQL数据库的设计,我倾向于认为它们通常是关键价值商店,将此文档存储在此关键字上。文件部分只是允许你进入选择/过滤的值。对于你的用户和子用户的例子,你为什么需要一个关系?是否有约束?您是否希望能够找到与用户关联的所有子用户?然后,也许只是复制用户在子用户文档中,那么你只是用用户过滤器查询该文档。或者有一个分层键,您可以在其中查找您正在查看的部分(类似于指标的Graphite查询)。提出自己的问题做关系的时候,我真的需要这种关系,或只是我希望有一个连接的世界就像我会在RDBMS

+0

真的有几个原因... MongoDB和nodejs很好的结合在一起。我目前的项目是跟踪贷款请求和优惠,这向我建议了一种基于文档的方法。另外,正如我在我的问题中写到的,我有一种感觉,nosql非常适合增量敏捷开发 - 通常使用RDBMS,我需要huuuge重构... 关于用户,“店主”类型创建“员工“输入只能访问有关该”商店“信息的用户。所有来自该商店的文件都需要供所有“次级用户”使用。 – faboolous

0

我建议你从MongoDB University

好好教训做每个月都有很多好的课程可以帮助您更好地理解两种体系结构之间的差异以及如何使用它们。

相关问题