【问题标题】:Trouble picking a DB for my use case. Any help/insight would be appreaciated?为我的用例选择数据库时遇到问题。任何帮助/见解将不胜感激?
【发布时间】:2021-06-28 15:30:29
【问题描述】:

我对设计自己的全栈项目有点陌生,但我正在设计一个小应用程序供我自己学习,我在其中存储用户的举重数据,他们可以在网络应用程序中输入和查看。

最终,我想扩大到用户能够查看、分享、喜欢等其他人的进步(有点像 Strava/Nike+Run Club 用于举重)- 什么样的数据库是一个好地方开始?

现在,这是一个投资组合应用程序。显然,如果我决定扩大规模,我可以改变并迁移到更好的替代方案。那么 NoSQL 或 RDBMS 可以正常工作吗?如果是这样,哪一个会很酷/与之相关?我应该考虑什么?

我应该提到我使用 React JS 和 Next JS 作为我的前端框架,以及后面的 Node JS 和 Express JS。也许这有点矫枉过正,但学习起来很酷!

【问题讨论】:

    标签: database architecture nosql rdbms


    【解决方案1】:

    如果这是您的第一个全栈应用程序之一,那么可能先专注于学习,然后再扩大/扩大世界统治 :)(我完全同意 @Hans 所说的)。

    NoSQL 和关系数据库方法是不同的,适合不同的用例,所以如果你想要最合适的方法,我建议先研究这些差异,然后将你学到的知识应用到你的解决方案中,并应用你认为最好的方法。

    我还建议您在数据库和您的逻辑之间放置某种dependency inversion (DI),这样您就可以交换不同的数据库,而不会过多地影响应用程序的其余部分。在这样的项目中,您将获得的最大收获之一与其说是最初的设计和构建,不如说是如何处理您以后想要进行的更改。进行重要的系统更改是测试架构的好方法 :) 部署 DI 将大大帮助您。

    我个人认为SQLite 是业余应用程序的绝佳选择 - 它是免费的,有良好的文档和强大的用户社区,您将能够使用它来实现关系和 NoSQL 数据库。

    【讨论】:

    • 感谢您的回答!我的用例是存储用户数据、帖子、cmets 等 - 从理解来看,这可以通过 RDBMS 和 NoSQL 来完成(尤其是我认为支持二进制 JSON 的 MySQL?)还有什么我应该记住的吗?是的,我会考虑添加一个 DI(需要研究那是什么)!
    • 不,去吧。尽管您最初可能希望从一个相对有限的解决方案开始,但只是为了开始并感受一下:例如为单个对象/概念就地获取一套简单的 CRUD 操作,甚至可能进行一些搜索/过滤。目的是使用范围广泛的与数据库相关的功能/情况,以了解它是什么样的。
    【解决方案2】:

    取决于你想学什么。 RDBMS 无处不在 我建议你研究一下 PostgreSQL,它有一组很棒的特性,你几乎可以用它做任何事情,并且性能很好。

    但如果你对 NoSql 更感兴趣,那就去吧。 如果你想在你的用户之间实现更复杂的关系,Graph DB 将是一个很好的选择。

    出于学习目的,通常最好不要过度分析并开始工作,其余的都是经验。

    【讨论】:

    • 谢谢!我知道 PostgreSQL 和 MySQL 在它们之间存在一些基本的附加差异 - 就大公司广泛使用的 RDBMS 而言,哪一个对学习更有用?
    • MySQL 是最流行的数据库,所以它在公司中使用很多,但 PostgreSQL 更高级。因此 PostgreSQL 用于复杂的大型系统,而 MySQL 用于更简单的应用程序。你可以使用 PostgreSQL 几乎所有东西,你可以使用 MySQL,但反过来不行。
    猜你喜欢
    • 2019-06-24
    • 1970-01-01
    • 2021-01-07
    • 1970-01-01
    • 1970-01-01
    • 2021-10-21
    • 2023-03-16
    • 1970-01-01
    • 2021-05-11
    相关资源
    最近更新 更多