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

肅南裕固族自治網(wǎng)站制作公司哪家好,找成都創(chuàng)新互聯(lián)!從網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、響應(yīng)式網(wǎng)站建設(shè)等網(wǎng)站項目制作,到程序開發(fā),運營維護(hù)。成都創(chuàng)新互聯(lián)自2013年創(chuàng)立以來到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗和運維經(jīng)驗,來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選成都創(chuàng)新互聯(lián)。
隨著數(shù)字化時代的到來,圖像數(shù)據(jù)已經(jīng)成為人們?nèi)粘I钪胁豢苫蛉钡囊徊糠?。從社交媒體上發(fā)布的照片、視頻,到醫(yī)療領(lǐng)域中的醫(yī)學(xué)影像,再到安防領(lǐng)域中的監(jiān)控圖像,都是由海量的圖像數(shù)據(jù)組成。如何高效地存儲和管理這些數(shù)據(jù),已經(jīng)成為一個亟待解決的問題。選擇合適的數(shù)據(jù)庫,是解決這個問題的一種重要手段。
一、不同的數(shù)據(jù)庫類型
在選擇合適的數(shù)據(jù)庫之前,需要了解不同的數(shù)據(jù)庫類型及其特點。
1.關(guān)系型數(shù)據(jù)庫:關(guān)系型數(shù)據(jù)庫是一種基于關(guān)系模型的數(shù)據(jù)庫,可通過 SQL 語言對數(shù)據(jù)進(jìn)行操作。它具有結(jié)構(gòu)嚴(yán)謹(jǐn)、數(shù)據(jù)冗余度低、數(shù)據(jù)一致性高等特點。常用的關(guān)系型數(shù)據(jù)庫包括 MySQL、Oracle 等。
2.非關(guān)系型數(shù)據(jù)庫:非關(guān)系型數(shù)據(jù)庫也叫 NoSQL 數(shù)據(jù)庫,與關(guān)系型數(shù)據(jù)庫相比,它更具擴展性、靈活性和高可用性。它通常采用鍵值對的方式存儲數(shù)據(jù),常用的 NoSQL 數(shù)據(jù)庫包括 MongoDB、Redis 等。
3.圖數(shù)據(jù)庫:圖數(shù)據(jù)庫是一種以圖形結(jié)構(gòu)表示和存儲數(shù)據(jù)的數(shù)據(jù)庫,適合處理復(fù)雜關(guān)系和連接性。常用的圖數(shù)據(jù)庫包括 Neo4j、OrientDB 等。
二、選擇合適的數(shù)據(jù)庫
對于圖像存儲和管理這一特別的需求,不同的數(shù)據(jù)庫類型有不同的適用性。
1.關(guān)系型數(shù)據(jù)庫:如果圖像數(shù)據(jù)的訪問模式較為簡單,且數(shù)據(jù)規(guī)模不是非常大,可以選擇關(guān)系型數(shù)據(jù)庫作為存儲方式。MySQL 等關(guān)系型數(shù)據(jù)庫對于大多數(shù)應(yīng)用來說已經(jīng)足夠了。
2.非關(guān)系型數(shù)據(jù)庫:如果圖像數(shù)據(jù)的訪問模式較為復(fù)雜,且數(shù)據(jù)規(guī)模較大,可以選擇非關(guān)系型數(shù)據(jù)庫作為存儲方式。例如采用 MongoDB 存儲圖像數(shù)據(jù),可以利用它的 BLOB 類型存儲圖像數(shù)據(jù),實現(xiàn)數(shù)據(jù)的高效讀寫。
3.圖數(shù)據(jù)庫:如果圖像數(shù)據(jù)具有復(fù)雜的關(guān)系網(wǎng)絡(luò),例如社交媒體上的用戶關(guān)系圖、醫(yī)學(xué)影像中的病人病歷等,可以采用圖數(shù)據(jù)庫作為存儲方式。圖數(shù)據(jù)庫對于查詢和遍歷關(guān)系型數(shù)據(jù)具有更優(yōu)秀的性能和更方便的表達(dá)方式。
三、存儲和管理圖像數(shù)據(jù)的更佳實踐
在選擇合適的數(shù)據(jù)庫之后,還需要考慮如何存儲和管理圖像數(shù)據(jù),以達(dá)到高效的效果。
1.選擇合適的存儲方案:針對不同的需求,可以選擇不同類型的存儲方案,如本地存儲、網(wǎng)絡(luò)存儲、云存儲等。
2.建立適當(dāng)?shù)乃饕横槍D像數(shù)據(jù)的不同特點,可以建立不同的索引,以便查詢和檢索。例如可以建立基于圖像特征的索引,如顏色、紋理等。
3.優(yōu)化數(shù)據(jù)訪問:對于大規(guī)模的圖像數(shù)據(jù),需要考慮如何優(yōu)化數(shù)據(jù)訪問,如利用緩存技術(shù)、壓縮技術(shù)、分布式存儲等。
4.數(shù)據(jù)備份和恢復(fù):為了保證數(shù)據(jù)的安全性和穩(wěn)定性,需要定期進(jìn)行數(shù)據(jù)備份和恢復(fù)。
選擇合適的數(shù)據(jù)庫,可以使圖像數(shù)據(jù)存儲更加高效,提高數(shù)據(jù)的訪問速度和管理效率。針對不同的需求,需要選擇不同類型的數(shù)據(jù)庫,并根據(jù)實際情況進(jìn)行存儲、索引、優(yōu)化等方面的工作。
成都網(wǎng)站建設(shè)公司-創(chuàng)新互聯(lián)為您提供網(wǎng)站建設(shè)、網(wǎng)站制作、網(wǎng)頁設(shè)計及定制高端網(wǎng)站建設(shè)服務(wù)!
MySQL里存儲圖片的是什么數(shù)據(jù)類型
背景
MySQL 一直以來都有 TEXT、擾灶BLOB 等類型用來存儲圖片、視頻等大對象信息。比如一張圖片,隨便一張都 5M 以上。視頻也是,隨便一部視頻就是 2G 以上。
假設(shè)用 MySQL 來存放電影視頻等信息,一部是 2G,那么存儲 1000 部就是 2TB,2TB 也就是 1000 條記錄而已,但是對數(shù)據(jù)庫性能來說,不僅僅是看記錄數(shù)量,更主要的還得看占用磁盤洞李頌空間大小??臻g大了,所有以前的經(jīng)驗啥的都失效了。
所以一般來說存放這類信息,也就是存儲他們的存放路徑,至于文件本身存放在哪里,那這就不是數(shù)據(jù)庫考慮的范疇了。數(shù)據(jù)庫只關(guān)心怎么來的快,怎么來的小。
舉例
雖然不推薦 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 份這樣的圖片來測試
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 來存儲這些圖片信息
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)
我們來給三張表插入 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)
看下文件大小,可以看到實際大小排名,LONGTEXT 字段存儲的更大,LONGBLOB 字段縮小到一半,最小的是存儲圖片路徑的表 tt_image3。所以這里從存儲空間來看,存放路徑最占優(yōu)勢。
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
那么怎么把圖片取出來呢?
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)出來二進(jìn)制文件即可,下面我寫了個存儲過程,導(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 語句里 image_file 變?yōu)?unhex(image_file) 即可。
總結(jié)
這里我舉了個用 MySQL 來存放圖片的例子,總的來說有以下三點:
占用磁盤空間大(這樣會帶來各種各樣的功能與性能問題,比如備份,寫入,讀取操作等)
使用不易
還是推薦用文件路徑來代替實際的文件內(nèi)容存放
varchar型,存圖片的路徑,一般不直接存圖片,非要存的話用blob。
MySQL是一個關(guān)系型數(shù)據(jù)庫管理系統(tǒng),由
瑞典
MySQL AB 公司開發(fā),目前屬于 Oracle 旗下產(chǎn)品。MySQL 是更流行的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)之一,在 WEB 應(yīng)用方面,MySQL是更好的 RDBMS (Relational Database Management System,關(guān)系數(shù)據(jù)庫管理系統(tǒng)) 應(yīng)用軟件。
MySQL是一種關(guān)系數(shù)據(jù)庫管理系統(tǒng),關(guān)系數(shù)據(jù)庫將數(shù)據(jù)保存在不同的表中,而不是將所有數(shù)據(jù)放在一個大倉庫內(nèi),這樣就增加了速度并提高了靈活性。
MySQL所使用的 SQL 語言是用于訪問數(shù)據(jù)庫的最常用標(biāo)準(zhǔn)化語言。MySQL 軟件采用了雙授權(quán)政策,分為社區(qū)版和商業(yè)版,由于其體積小、速度快、總體擁有成本低,尤其是
開放源碼
這一特點,一般中小型網(wǎng)站的開發(fā)都選擇 MySQL 作為網(wǎng)站數(shù)據(jù)庫。
由于其社區(qū)版的性能卓越,搭配 PHP 和 Apache 可組成良好的開發(fā)環(huán)境。
系統(tǒng)特性
1.使用 C和 C++編凱納寫,并使用了多種
編譯器
進(jìn)行測試,保證了
源代碼
的可移植性。
2.支持 AIX、FreeBSD、HP-UX、Linux、
Mac OS
、NovellNetware、OpenBSD、OS/2 Wrap、Solaris、Windows等多種操作系統(tǒng)。
3.為多種
編程語言
提供了 API。這些編程語言包括 C、C++、Python、Java、Perl、PHP、Eiffel、Ruby,.NET和 Tcl 等。
4.支持
多線程
,充分利用 CPU 資源。
5.優(yōu)化的 SQL查詢算法,有效地提高查詢速度。
6.既能夠作為一個單獨的應(yīng)用程序應(yīng)用在客戶端服務(wù)器網(wǎng)絡(luò)環(huán)境中,也能夠作為一個庫而嵌入正孫閉到其他的軟件中。
7.提供多語言支持,常舉裂見的編碼如中文的
GB 2312
、BIG5,
日文
的 Shift_JIS等都可以用作數(shù)據(jù)表名和數(shù)據(jù)列名。
varchar型,存圖片的路徑,一般不直接存圖片,非要存的話用blob
圖像存儲用什么數(shù)據(jù)庫的介紹就聊到這里吧,感謝你花時間閱讀本站內(nèi)容,更多關(guān)于圖像存儲用什么數(shù)據(jù)庫,選擇合適的數(shù)據(jù)庫,讓圖像存儲更加高效。,MySQL里存儲圖片的是什么數(shù)據(jù)類型的信息別忘了在本站進(jìn)行查找喔。
香港云服務(wù)器機房,創(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ù)庫,讓圖像存儲更加高效。(圖像存儲用什么數(shù)據(jù)庫)
文章轉(zhuǎn)載:http://www.5511xx.com/article/dhidcih.html


咨詢
建站咨詢
