lin*_*ndy 10 python sql database nosql rethinkdb
我正在构建我的网络应用程序的后端; 它将作为前端的API,它将用Python编写(确切地说是Flask).
在做了一些关于设计和实现的决定之后,我进入了数据库部分.我开始考虑NoSQL数据存储是否比传统的SQL数据库更适合我的项目.以下是一个基本的功能描述,应该由数据库处理,然后我可以提出一个关于我应该选择哪种类型的存储的优缺点列表.最后说一下为什么我考虑过RethinkDB而不是其他NoSQL数据存储.
API的基本功能
API包含只有少数车型:Artist,Song,Suggestion,User和UserArtists.
我希望能够添加User一些关联数据并将其链接Artist到它.我想根据请求添加Songs Artist,并生成一个Suggestionfor User,其中包含一个Artist和一个Song.
也许最重要的部分之一是Artists将定期链接到Users(并且Artists也可以从系统中删除 - 因此也可以从s中删除User- 如果它们不满足某些标准).Songs也将动态添加到Artists.所有这些意味着Users没有固定的Artists组,也没有Artist固定的Songs组 - 它们将不断更新.
优点
对于NoSQL:
Artist都有FacebookID或SongSoundcloudID;Songs 的数量,但特别是Suggestions会提高很多,因此NoSQL会在这里做得更好;对于SQL:
缺点
对于NoSQL:
UserArtists对于SQL:
为什么选择RethinkDB?
我已经考虑过RehinkDB可能为我的API实现NoSQL,原因如下:
所有这些都在考虑之中,我很高兴听到有关NoSQL或SQL是否更适合我的需求的任何建议,以及两者上的任何其他赞成,当然还有一些我没有说明的事情的更正正常.
neu*_*ino 14
我在RethinkDB工作,但这是我作为网络开发人员的公正回答(至少我没有偏见).
从开发人员的角度来看,灵活的架构是很好的(在您的情况下).就像你说的那样,使用像PostgreSQL这样的东西,你必须格式化你从第三方(SoundCloud,Facebook等)提取的所有数据.虽然这不是一件很难做到的事情,但这并不是一件令人愉快的事情.
能够加入表格对我来说是自然的做事方式(比如用户/用户艺术家/艺术家).虽然您可以拥有一个用户将包含艺术家的结构,但是当您需要检索艺术家以及每个用户列表时,使用它将会令人不愉快.
第一点是NoSQL数据库中常见的东西,而JOIN操作更像是SQL数据库.您可以将RethinkDB视为提供每个世界最佳的东西.
我相信使用RethinkDB进行开发是简单,快速和愉快的,而这正是我作为Web开发人员所期待的.
但是,您可能需要一件事,即RethinkDB无法提供,即交易.如果您需要对多个表(或文档 - 如果您必须在用户之间转移资金)进行原子更新,那么使用PostgreSQL之类的东西肯定会更好.如果您只需要更新多个表,RethinkDB可以处理它.
就像你说的那样,虽然RethinkDB是新的,社区是惊人的,我们 - 在RethinkDB - 关心我们的用户.
如果您有更多问题,我很乐意回答:)
| 归档时间: | 
 | 
| 查看次数: | 2750 次 | 
| 最近记录: |