连接mysql语言_杂谈各个语言连接数据库如何实现的-第一讲
我們都知道各個(gè)語(yǔ)言連接數(shù)據(jù)庫(kù)都有封裝好的API。比如操作MySQL,php有pdo,mysqli等,java有jdbc,c#有mysql-connector-net,nodejs也有mysql的驅(qū)動(dòng)。那么這些驅(qū)動(dòng)是如何開發(fā)的呢?新出一門語(yǔ)言,或者我們自己開發(fā)了一個(gè)語(yǔ)言(可能我們一輩子也不能開發(fā)出來(lái),但是夢(mèng)想還是要有的,萬(wàn)一實(shí)現(xiàn)了呢~),如何寫一個(gè)操作mysql的驅(qū)動(dòng)?
我們知道m(xù)ysql有自己的解釋器,就是我們說(shuō)的sql命令解釋執(zhí)行,比如我們查詢一個(gè)表中的字段,select * from user;發(fā)送這個(gè)命令,我們就可以得到user表中各條記錄,那么各個(gè)語(yǔ)言實(shí)現(xiàn)的mysql查詢操作其實(shí)可以很簡(jiǎn)單,我們只要把我們想要執(zhí)行的sql語(yǔ)句封裝好,發(fā)送給sql的解釋器就可以了。
那么如何和解釋器進(jìn)行溝通,就是我們接下來(lái)要解決的問(wèn)題。首先看一個(gè)圖:
這個(gè)圖非常的復(fù)雜,不過(guò)我們只需要關(guān)注的就是mysql交互走的是socket協(xié)議,那么什么是socket協(xié)議呢?簡(jiǎn)單來(lái)說(shuō)就是一些封裝好的接口,比如如reate、listen、connect、accept、send、read和write等,通過(guò)它們我們可以更好地對(duì)TCP\IP進(jìn)行封包,拆包。簡(jiǎn)單來(lái)說(shuō),就是同過(guò)socket,我們就可以實(shí)現(xiàn)應(yīng)用間的信息互通,也就是我們常說(shuō)的其他語(yǔ)言連接mysql的驅(qū)動(dòng)。計(jì)算機(jī)系統(tǒng)就是在不斷抽象,不斷封裝,不斷迭代發(fā)展起來(lái)的,計(jì)算機(jī)本身只是識(shí)別高低電壓,我們通過(guò)抽象,轉(zhuǎn)換成01,然后進(jìn)一步將這些東西封裝,形成了現(xiàn)在復(fù)雜的計(jì)算機(jī)體系架構(gòu)。
比如我們經(jīng)常提到的OSI七層模型,其實(shí)就是我們要傳輸信息,但是直接傳01信號(hào),我們無(wú)法更好的理解,無(wú)法區(qū)分不同的信息,所以我們就行了信息傳輸?shù)姆庋b,比如我們把源地址,目的地址還有信息放到一起發(fā)送,然后識(shí)別的時(shí)候進(jìn)行對(duì)應(yīng)的解析,我們就知道這個(gè)包發(fā)的內(nèi)容是不是我們想要的,如果不是,我們需要做什么處理,路由器就是把給你的包發(fā)給你,不是給你的包,轉(zhuǎn)發(fā)給別人。
有點(diǎn)說(shuō)遠(yuǎn)了,下面我們說(shuō)各個(gè)語(yǔ)言是如何和mysql交互的,其實(shí)就是通過(guò)socket協(xié)議,我們將一些sql命令發(fā)送給msyql,剩下的就是等mysql通過(guò)socket返回給我們信息就完事了。
那么socket和mysql具體是如何溝通的,我們下回分解~
總結(jié)
以上是生活随笔為你收集整理的连接mysql语言_杂谈各个语言连接数据库如何实现的-第一讲的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: excel怎么制做表格(用Excel绘制
- 下一篇: mysql写到excel_使用Pytho