当前位置: 首页 > 面试题库 >

RDBMS对Golang的影响

呼延承平
2023-03-14
问题内容

对于这个关于我测试过的内容和数字运算的问题,我不会长篇大论。我对实际的最新练习表演更感兴趣。

我已经阅读了成千上万的文章,有些文章持怀疑态度,或是 对一个图书馆 都很 赞成
。我目前正在使用进行测试gorp,但我不知道如何将此类库的性能与其他库进行比较。

我知道gorp是一个额外的层,试图将ORM添加到基本的SQL驱动程序/实现中,但是看到Go的代码非常清晰,并且在执行的所有操作中都非常接近其骨干。我使用的也不是PHP
/ Python / JAVA,在这种情况下,您必须浏览无尽的复杂性,才能真正看到软件包的本质。

所以我的问题是,是否有人可以分享(始终欢迎基准:))他们在该主题上的经验和知识。

我认为NoSQL类型的解决方案不是我的项目的选择。我所有的项目始终强烈依赖于业务逻辑和相互交织的关系。我也想知道Postgres是否会击败MySQL。使用Django(Python)时,我注意到使用Postgres可获得显着的性能提升,但是我从来没有发现这是由于Postgres核心实现还是Django使用包装器的方式所致。

小更新

重读问题后,我注意到我有点错过了它的实际目标。我实际上是在寻找最合适的SQL解决方案,以使Golang本身的运行速度减慢。我知道SQL可以并发运行,但是在作为Web服务运行时也会涉及大量通信。如果那将使我在性能上获得重大收益,那么我真的不会再去掉ORM部分。


问题答案:

如果您需要使用ORM
sqlx或gorp,则可以使用Go选项。就我个人而言,我有点老了,我宁愿对于给定的类型Foo,我宁愿编写FooDB实现FooDS接口的结构。您应用中的所有内容都只会使用FooDS。(DB
=数据库,DS =数据存储)

您的FooDB实现可以使用MongoDB,LevelDB,SQL等任意数量的基础技术,并且可以随您的应用程序的更改而更改,并且此更改对其余应用程序是透明的(因为其余的应用程序都使用FooDS)。

我将默认使用数据库/ sql(预备语句等),最成熟的Go
SQL驱动程序是Julien Schmidt的MySQL驱动程序:https : //github.com/go-sql-driver/html" target="_blank">mysql



 类似资料:
  • 主要内容:什么是表(Table)?,什么是字段(Field)?,什么是列(Column)?,什么是记录(Record)?,什么是空值(NULL)?,SQL 约束,数据的完整性,数据库范式RDBMS 是 Relational Data base Management System 的缩写,中文译为“关系数据库管理系统”,它是 SQL 语言以及所有现代数据库系统(例如 SQL Server、DB2、Oracle、MySQL 和 Microsoft Access)的基础。 关系数据库管理系统(RDBM

  • 若要成功地创建一个新的连接到本地或远程服务器 - 不管通过 SSL、SSH 或 HTTP,都要在常规选项卡中设置连接属性。如果你的互联网服务供应商(ISP)不提供直接访问其服务器,安全隧道协定(SSH)或 HTTP 是另一种解决办法。 【注意】下列的选项会根据连接的服务器类型而有所不同。 添加到 当你登录 Navicat Cloud 功能后,你可以选择保存连接在我的连接或 Navicat Clou

  • 若要成功地创建一个新的连接到本地或远程服务器 - 不管通过 SSL、SSH 或 HTTP,都要在常规选项卡中设置连接属性。如果你的互联网服务供应商(ISP)不提供直接访问其服务器,安全隧道协定(SSH)或 HTTP 是另一种解决办法。 【注意】下列的选项会根据连接的服务器类型而有所不同。 添加到 当你登录 Navicat Cloud 功能后,你可以选择保存连接在我的连接或 Navicat Clou

  • 若要成功地创建一个新的连接到本地或远程服务器 - 不管通过 SSL、SSH 或 HTTP,都要在常规选项卡中设置连接属性。如果你的互联网服务供应商(ISP)不提供直接访问其服务器,安全隧道协定(SSH)或 HTTP 是另一种解决办法。 【注意】下列的选项会根据连接的服务器类型而有所不同。 添加到 当你登录 Navicat Cloud 功能后,你可以选择保存连接在我的连接或 Navicat Clou

  • 问题内容: 在像mySQL这样的RDBMS数据库中处理多对多关系的最佳方法是什么? 尝试使用数据透视表来跟踪关系,但这会导致以下任一情况: 规范化被抛在后面 空或空的列 您采取了什么方法来支持多对多关系? 问题答案: 在 专门针对该关系 的 表 (有时称为 联结表 )中跟踪多对多关系。该表将该关系建模为指向相反方向的两个一对多关系。 然后,您可以使用联结表通过外键 通过它 联接 其他表 。

  • 问题内容: 我正在尝试通过构建一个原型订单管理应用程序来学习Go和Gorm。该数据库是MySQL。通过简单的查询,Gorm表现出色。但是,当尝试获取涉及具有一对一关系的一对多组合的结果集时,Gorm似乎不足。毫无疑问,实际上是我缺乏理解。我似乎找不到任何我想完成的在线示例。任何帮助将不胜感激。 去结构 数据库表 当前查询 结果(gorm进行2个数据库查询) 替代查询 结果(gorm进行3个db查询