鍍金池/ 問(wèn)答/GO  數(shù)據(jù)庫(kù)/ 關(guān)于golang和數(shù)據(jù)庫(kù)連接,客戶端以及驅(qū)動(dòng)的疑問(wèn)?

關(guān)于golang和數(shù)據(jù)庫(kù)連接,客戶端以及驅(qū)動(dòng)的疑問(wèn)?

比如go連接mysql,https://github.com/jmoiron/sqlx 是實(shí)現(xiàn)了go官方database/sql 的一個(gè)客戶端,額外還需要驅(qū)動(dòng):https://github.com/go-sql-dri... ,才能使用。

但是我在連接mongodb的時(shí)候,就不是這樣,直接使用https://github.com/go-mgo/mgo 就能和mongo server交互了。是因?yàn)閙go集成了驅(qū)動(dòng)和客戶端兩者?

現(xiàn)在又發(fā)現(xiàn)mongo官方開源的:https://github.com/mongodb/mo... ,貌似也是直接用就可以了,不會(huì)存在驅(qū)動(dòng)和客戶端分開的情況

回答
編輯回答
囍槑

golang的 database/sql 看包名可以知道是跟關(guān)系數(shù)據(jù)庫(kù)有關(guān)的。只提供一套抽象接口,go-sql-driver是實(shí)現(xiàn)了這套接口的驅(qū)動(dòng),用的時(shí)候我們還是直接用database/sql就可以了,這叫面向接口編程

mgo是Mongodb的連接程序,跟database/sql接口沒(méi)有關(guān)系。

2017年9月12日 18:16
編輯回答
乖乖噠

mongodb是一家公司生產(chǎn)的一個(gè)非關(guān)系型數(shù)據(jù)庫(kù)產(chǎn)品,mgo本身就扮演者驅(qū)動(dòng)的角色. 而sqlx相當(dāng)于是符合SQL訪問(wèn)方式的數(shù)據(jù)庫(kù)抽象層,作用與java里的jdbc標(biāo)準(zhǔn)類似,具體到每一個(gè)數(shù)據(jù)庫(kù)產(chǎn)品還需要根據(jù)各個(gè)產(chǎn)品適配,也就是需要驅(qū)動(dòng)來(lái)完成.

2017年9月14日 22:25