新聞中心
選擇合適的數(shù)據(jù)庫(kù),讓圖像存儲(chǔ)更加高效

肅南裕固族自治網(wǎng)站制作公司哪家好,找成都創(chuàng)新互聯(lián)!從網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、APP開(kāi)發(fā)、響應(yīng)式網(wǎng)站建設(shè)等網(wǎng)站項(xiàng)目制作,到程序開(kāi)發(fā),運(yùn)營(yíng)維護(hù)。成都創(chuàng)新互聯(lián)自2013年創(chuàng)立以來(lái)到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來(lái)保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選成都創(chuàng)新互聯(lián)。
隨著數(shù)字化時(shí)代的到來(lái),圖像數(shù)據(jù)已經(jīng)成為人們?nèi)粘I钪胁豢苫蛉钡囊徊糠?。從社交媒體上發(fā)布的照片、視頻,到醫(yī)療領(lǐng)域中的醫(yī)學(xué)影像,再到安防領(lǐng)域中的監(jiān)控圖像,都是由海量的圖像數(shù)據(jù)組成。如何高效地存儲(chǔ)和管理這些數(shù)據(jù),已經(jīng)成為一個(gè)亟待解決的問(wèn)題。選擇合適的數(shù)據(jù)庫(kù),是解決這個(gè)問(wèn)題的一種重要手段。
一、不同的數(shù)據(jù)庫(kù)類型
在選擇合適的數(shù)據(jù)庫(kù)之前,需要了解不同的數(shù)據(jù)庫(kù)類型及其特點(diǎn)。
1.關(guān)系型數(shù)據(jù)庫(kù):關(guān)系型數(shù)據(jù)庫(kù)是一種基于關(guān)系模型的數(shù)據(jù)庫(kù),可通過(guò) SQL 語(yǔ)言對(duì)數(shù)據(jù)進(jìn)行操作。它具有結(jié)構(gòu)嚴(yán)謹(jǐn)、數(shù)據(jù)冗余度低、數(shù)據(jù)一致性高等特點(diǎn)。常用的關(guān)系型數(shù)據(jù)庫(kù)包括 MySQL、Oracle 等。
2.非關(guān)系型數(shù)據(jù)庫(kù):非關(guān)系型數(shù)據(jù)庫(kù)也叫 NoSQL 數(shù)據(jù)庫(kù),與關(guān)系型數(shù)據(jù)庫(kù)相比,它更具擴(kuò)展性、靈活性和高可用性。它通常采用鍵值對(duì)的方式存儲(chǔ)數(shù)據(jù),常用的 NoSQL 數(shù)據(jù)庫(kù)包括 MongoDB、Redis 等。
3.圖數(shù)據(jù)庫(kù):圖數(shù)據(jù)庫(kù)是一種以圖形結(jié)構(gòu)表示和存儲(chǔ)數(shù)據(jù)的數(shù)據(jù)庫(kù),適合處理復(fù)雜關(guān)系和連接性。常用的圖數(shù)據(jù)庫(kù)包括 Neo4j、OrientDB 等。
二、選擇合適的數(shù)據(jù)庫(kù)
對(duì)于圖像存儲(chǔ)和管理這一特別的需求,不同的數(shù)據(jù)庫(kù)類型有不同的適用性。
1.關(guān)系型數(shù)據(jù)庫(kù):如果圖像數(shù)據(jù)的訪問(wèn)模式較為簡(jiǎn)單,且數(shù)據(jù)規(guī)模不是非常大,可以選擇關(guān)系型數(shù)據(jù)庫(kù)作為存儲(chǔ)方式。MySQL 等關(guān)系型數(shù)據(jù)庫(kù)對(duì)于大多數(shù)應(yīng)用來(lái)說(shuō)已經(jīng)足夠了。
2.非關(guān)系型數(shù)據(jù)庫(kù):如果圖像數(shù)據(jù)的訪問(wèn)模式較為復(fù)雜,且數(shù)據(jù)規(guī)模較大,可以選擇非關(guān)系型數(shù)據(jù)庫(kù)作為存儲(chǔ)方式。例如采用 MongoDB 存儲(chǔ)圖像數(shù)據(jù),可以利用它的 BLOB 類型存儲(chǔ)圖像數(shù)據(jù),實(shí)現(xiàn)數(shù)據(jù)的高效讀寫(xiě)。
3.圖數(shù)據(jù)庫(kù):如果圖像數(shù)據(jù)具有復(fù)雜的關(guān)系網(wǎng)絡(luò),例如社交媒體上的用戶關(guān)系圖、醫(yī)學(xué)影像中的病人病歷等,可以采用圖數(shù)據(jù)庫(kù)作為存儲(chǔ)方式。圖數(shù)據(jù)庫(kù)對(duì)于查詢和遍歷關(guān)系型數(shù)據(jù)具有更優(yōu)秀的性能和更方便的表達(dá)方式。
三、存儲(chǔ)和管理圖像數(shù)據(jù)的更佳實(shí)踐
在選擇合適的數(shù)據(jù)庫(kù)之后,還需要考慮如何存儲(chǔ)和管理圖像數(shù)據(jù),以達(dá)到高效的效果。
1.選擇合適的存儲(chǔ)方案:針對(duì)不同的需求,可以選擇不同類型的存儲(chǔ)方案,如本地存儲(chǔ)、網(wǎng)絡(luò)存儲(chǔ)、云存儲(chǔ)等。
2.建立適當(dāng)?shù)乃饕横槍?duì)圖像數(shù)據(jù)的不同特點(diǎn),可以建立不同的索引,以便查詢和檢索。例如可以建立基于圖像特征的索引,如顏色、紋理等。
3.優(yōu)化數(shù)據(jù)訪問(wèn):對(duì)于大規(guī)模的圖像數(shù)據(jù),需要考慮如何優(yōu)化數(shù)據(jù)訪問(wèn),如利用緩存技術(shù)、壓縮技術(shù)、分布式存儲(chǔ)等。
4.數(shù)據(jù)備份和恢復(fù):為了保證數(shù)據(jù)的安全性和穩(wěn)定性,需要定期進(jìn)行數(shù)據(jù)備份和恢復(fù)。
選擇合適的數(shù)據(jù)庫(kù),可以使圖像數(shù)據(jù)存儲(chǔ)更加高效,提高數(shù)據(jù)的訪問(wèn)速度和管理效率。針對(duì)不同的需求,需要選擇不同類型的數(shù)據(jù)庫(kù),并根據(jù)實(shí)際情況進(jìn)行存儲(chǔ)、索引、優(yōu)化等方面的工作。
成都網(wǎng)站建設(shè)公司-創(chuàng)新互聯(lián)為您提供網(wǎng)站建設(shè)、網(wǎng)站制作、網(wǎng)頁(yè)設(shè)計(jì)及定制高端網(wǎng)站建設(shè)服務(wù)!
MySQL里存儲(chǔ)圖片的是什么數(shù)據(jù)類型
背景
MySQL 一直以來(lái)都有 TEXT、擾灶BLOB 等類型用來(lái)存儲(chǔ)圖片、視頻等大對(duì)象信息。比如一張圖片,隨便一張都 5M 以上。視頻也是,隨便一部視頻就是 2G 以上。
假設(shè)用 MySQL 來(lái)存放電影視頻等信息,一部是 2G,那么存儲(chǔ) 1000 部就是 2TB,2TB 也就是 1000 條記錄而已,但是對(duì)數(shù)據(jù)庫(kù)性能來(lái)說(shuō),不僅僅是看記錄數(shù)量,更主要的還得看占用磁盤(pán)洞李頌空間大小??臻g大了,所有以前的經(jīng)驗(yàn)啥的都失效了。
所以一般來(lái)說(shuō)存放這類信息,也就是存儲(chǔ)他們的存放路徑,至于文件本身存放在哪里,那這就不是數(shù)據(jù)庫(kù)考慮的范疇了。數(shù)據(jù)庫(kù)只關(guān)心怎么來(lái)的快,怎么來(lái)的小。
舉例
雖然不推薦 MySQL 這樣做,但是也得知道 MySQL 該怎么做才行,做到心里有數(shù)。比如下面一張微信圖片,大概 5M 的樣子。
root@ytt:/var/lib/mysql-files# ls -sihl 微信圖片_.jpg.4M -rw-r–r– 1 root root 5.4M Jul 11 07:17 微信圖片_.jpg
拷貝 100 份這樣的圖片來(lái)測(cè)試
root@ytt:/var/lib/mysql-files# for i in `seq 1 100`; do cp 微信圖片_.jpg “$i”.jpg;done;
root@ytt:/var/lib/mysql-files# ls
100.jpg 17.jpg 25.jpg 33.jpg 41.jpg 4.jpg 58.jpg 66.jpg 74.jpg 82.jpg 90.jpg 99.jpg f8.tsv
10.jpg 18.jpg 26.jpg 34.jpg 42.jpg 50.jpg 59.jpg 67.jpg 75.jpg 83.jpg 91.jpg 9.jpg 微信圖片_.jpg
1111.jpg 19.jpg 27.jpg 35.jpg 43.jpg 51.jpg 5.jpg 68.jpg 76.jpg 84.jpg 92.jpg f1.tsv
11.jpg 1.jpg 28.jpg 36.jpg 44.jpg 52.jpg 60.jpg 69.jpg 77.jpg 85.jpg 93.jpg f2.tsv
12.jpg 20.jpg 29.jpg 37.jpg 45.jpg 53.jpg 61.jpg 6.jpg 78.jpg 86.jpg 94.jpg f3.tsv
13.jpg 21.jpg 2.jpg 38.jpg 46.jpg 54.jpg 62.jpg 70.jpg 79.jpg 87.jpg 95.jpg f4.tsv
14.jpg 22.jpg 30.jpg 39.jpg 47.jpg 55.jpg 納鄭63.jpg 71.jpg 7.jpg 88.jpg 96.jpg f5.tsv
15.jpg 23.jpg 31.jpg 3.jpg 48.jpg 56.jpg 64.jpg 72.jpg 80.jpg 89.jpg 97.jpg f6.tsv
16.jpg 24.jpg 32.jpg 40.jpg 49.jpg 57.jpg 65.jpg 73.jpg 81.jpg 8.jpg 98.jpg f7.tsv
我們建三張表,分別用 LONGBLOB、LONGTEXT 和 VARCHAR 來(lái)存儲(chǔ)這些圖片信息
mysql> show create table tt_image1G
*************************** 1. row ***************************
Table: tt_image1
Create Table: CREATE TABLE `tt_image1` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`image_file` longblob,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
1 row in set (0.00 sec)
mysql> show create table tt_image2G
*************************** 1. row ***************************
Table: tt_image2
Create Table: CREATE TABLE `tt_image2` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`image_file` longtext,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
1 row in set (0.00 sec)
mysql> show create table tt_image3G
*************************** 1. row ***************************
Table: tt_image3
Create Table: CREATE TABLE `tt_image3` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`image_file` varchar(100) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
1 row in set (0.00 sec)
我們來(lái)給三張表插入 100 張圖片(插入前,建議把 max_allowed_packet 設(shè)置到更大)
tt_image1
root@ytt:/var/lib/mysql-files# for i in `seq 1 100`;
do mysql -S /var/run/mysqld/mysqld.sock -e “insert into ytt.tt_image1(image_file)
values (load_file(‘/var/lib/mysql-files/$i.jpg’))”;done;
tt_image2
root@ytt:/var/lib/mysql-files# for i in `seq 1 100`;
do mysql -S /var/run/mysqld/mysqld.sock -e “insert into ytt.tt_image2(image_file)
values (hex(load_file(‘/var/lib/mysql-files/$i.jpg’)))”;done;
tt_image3
root@ytt:/var/lib/mysql-files# aa=’begin;’;for i in `seq 1 100`;
do aa=$aa”insert into ytt.tt_image3(image_file) values
(‘/var/lib/mysql-files/$i.jpg’);”;
done;aa=$aa’commit;’;mysql -S /var/run/mysqld/mysqld.sock -e “`echo $aa`”;
檢查下三張表記錄數(shù)
mysql> select ‘tt_image1’ as name ,count(*) from tt_image1 union allselect ‘tt_image2’,count(*) from tt_image2 union all select ‘tt_image3’, count(*) from tt_image3;+++| name | count(*) |+++| tt_image1 ||| tt_image2 ||| tt_image3 ||+++3 rows in set (0.00 sec)
看下文件大小,可以看到實(shí)際大小排名,LONGTEXT 字段存儲(chǔ)的更大,LONGBLOB 字段縮小到一半,最小的是存儲(chǔ)圖片路徑的表 tt_image3。所以這里從存儲(chǔ)空間來(lái)看,存放路徑最占優(yōu)勢(shì)。
root@ytt:/var/lib/mysql/ytt# ls -silhS tt_image*.1G -rw-rmysql mysql 1.1G Jul 11 07:27 tt_image2.ibdM -rw-rmysql mysql 544M Jul 11 07:26 tt_image1.ibdK -rw-rmysql mysql 112K Jul 11 07:27 tt_image3.ibd
那么怎么把圖片取出來(lái)呢?
tt_image3 肯定是最容易的
mysql> select * from tt_image3;+—-++| id | image_file |+—-++| 1 | /var/lib/mysql-files/1.jpg |+—-++…100 rows in set (0.00 sec)
tt_image1 直接導(dǎo)出來(lái)二進(jìn)制文件即可,下面我寫(xiě)了個(gè)存儲(chǔ)過(guò)程,導(dǎo)出所有圖片。
mysql> DELIMITER $$mysql> USE `ytt`$$mysql> DROP PROCEDURE IF EXISTS `sp_get_image`$$mysql> CREATE DEFINER=`ytt`@`localhost` PROCEDURE `sp_get_image`()mysql> BEGIN DECLARE i,cnt INT DEFAULT 0; SELECT COUNT(*) FROM tt_image1 WHERE 1 INTO cnt; WHILE i DELIMITER ;mysql> call sp_get_image;
tt_image2 類似,把 select 語(yǔ)句里 image_file 變?yōu)?unhex(image_file) 即可。
總結(jié)
這里我舉了個(gè)用 MySQL 來(lái)存放圖片的例子,總的來(lái)說(shuō)有以下三點(diǎn):
占用磁盤(pán)空間大(這樣會(huì)帶來(lái)各種各樣的功能與性能問(wèn)題,比如備份,寫(xiě)入,讀取操作等)
使用不易
還是推薦用文件路徑來(lái)代替實(shí)際的文件內(nèi)容存放
varchar型,存圖片的路徑,一般不直接存圖片,非要存的話用blob。
MySQL是一個(gè)關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),由
瑞典
MySQL AB 公司開(kāi)發(fā),目前屬于 Oracle 旗下產(chǎn)品。MySQL 是更流行的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)之一,在 WEB 應(yīng)用方面,MySQL是更好的 RDBMS (Relational Database Management System,關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)) 應(yīng)用軟件。
MySQL是一種關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng),關(guān)系數(shù)據(jù)庫(kù)將數(shù)據(jù)保存在不同的表中,而不是將所有數(shù)據(jù)放在一個(gè)大倉(cāng)庫(kù)內(nèi),這樣就增加了速度并提高了靈活性。
MySQL所使用的 SQL 語(yǔ)言是用于訪問(wèn)數(shù)據(jù)庫(kù)的最常用標(biāo)準(zhǔn)化語(yǔ)言。MySQL 軟件采用了雙授權(quán)政策,分為社區(qū)版和商業(yè)版,由于其體積小、速度快、總體擁有成本低,尤其是
開(kāi)放源碼
這一特點(diǎn),一般中小型網(wǎng)站的開(kāi)發(fā)都選擇 MySQL 作為網(wǎng)站數(shù)據(jù)庫(kù)。
由于其社區(qū)版的性能卓越,搭配 PHP 和 Apache 可組成良好的開(kāi)發(fā)環(huán)境。
系統(tǒng)特性
1.使用 C和 C++編凱納寫(xiě),并使用了多種
編譯器
進(jìn)行測(cè)試,保證了
源代碼
的可移植性。
2.支持 AIX、FreeBSD、HP-UX、Linux、
Mac OS
、NovellNetware、OpenBSD、OS/2 Wrap、Solaris、Windows等多種操作系統(tǒng)。
3.為多種
編程語(yǔ)言
提供了 API。這些編程語(yǔ)言包括 C、C++、Python、Java、Perl、PHP、Eiffel、Ruby,.NET和 Tcl 等。
4.支持
多線程
,充分利用 CPU 資源。
5.優(yōu)化的 SQL查詢算法,有效地提高查詢速度。
6.既能夠作為一個(gè)單獨(dú)的應(yīng)用程序應(yīng)用在客戶端服務(wù)器網(wǎng)絡(luò)環(huán)境中,也能夠作為一個(gè)庫(kù)而嵌入正孫閉到其他的軟件中。
7.提供多語(yǔ)言支持,常舉裂見(jiàn)的編碼如中文的
GB 2312
、BIG5,
日文
的 Shift_JIS等都可以用作數(shù)據(jù)表名和數(shù)據(jù)列名。
varchar型,存圖片的路徑,一般不直接存圖片,非要存的話用blob
圖像存儲(chǔ)用什么數(shù)據(jù)庫(kù)的介紹就聊到這里吧,感謝你花時(shí)間閱讀本站內(nèi)容,更多關(guān)于圖像存儲(chǔ)用什么數(shù)據(jù)庫(kù),選擇合適的數(shù)據(jù)庫(kù),讓圖像存儲(chǔ)更加高效。,MySQL里存儲(chǔ)圖片的是什么數(shù)據(jù)類型的信息別忘了在本站進(jìn)行查找喔。
香港云服務(wù)器機(jī)房,創(chuàng)新互聯(lián)(www.cdcxhl.com)專業(yè)云服務(wù)器廠商,回大陸優(yōu)化帶寬,安全/穩(wěn)定/低延遲.創(chuàng)新互聯(lián)助力企業(yè)出海業(yè)務(wù),提供一站式解決方案。香港服務(wù)器-免備案低延遲-雙向CN2+BGP極速互訪!
文章題目:選擇合適的數(shù)據(jù)庫(kù),讓圖像存儲(chǔ)更加高效。(圖像存儲(chǔ)用什么數(shù)據(jù)庫(kù))
瀏覽地址:http://fisionsoft.com.cn/article/dhidcih.html


咨詢
建站咨詢
