CN106844374B - 一种存储、检索照片的方法及装置 - Google Patents
一种存储、检索照片的方法及装置 Download PDFInfo
- Publication number
- CN106844374B CN106844374B CN201510883423.7A CN201510883423A CN106844374B CN 106844374 B CN106844374 B CN 106844374B CN 201510883423 A CN201510883423 A CN 201510883423A CN 106844374 B CN106844374 B CN 106844374B
- Authority
- CN
- China
- Prior art keywords
- photo
- stored
- rowkey
- type
- attribute
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/50—Information retrieval; Database structures therefor; File system structures therefor of still image data
- G06F16/58—Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually
- G06F16/5866—Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually using information manually generated, e.g. tags, keywords, comments, manually generated location and time information
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/50—Information retrieval; Database structures therefor; File system structures therefor of still image data
- G06F16/51—Indexing; Data structures therefor; Storage structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/50—Information retrieval; Database structures therefor; File system structures therefor of still image data
- G06F16/58—Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually
- G06F16/583—Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually using metadata automatically derived from the content
- G06F16/5838—Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually using metadata automatically derived from the content using colour
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Library & Information Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种存储、检索照片的方法及装置,其中方法包括:根据待存储照片的预设第一类属性,设置待存储照片的行键值rowkey;获取待存储照片的预设第二类属性,建立待存储照片的第二类属性与所述rowkey之间的关联;按照所述rowkey的字符顺序,将待存储照片的数据作为hbase表的列值存储在hbase中;接收客户端发送的查询请求,根据所述查询请求中携带的第一类属性和/或第二类属性的查询条件,在hbase中查询与所述查询请求匹配的照片。本发明实施例基于HDFS进行照片数据的高容量且快速存储,同时具有高可用性、检索快速的优点,可充分发挥IO吞吐能力,成本较低,提高了用户的体验性。
Description
技术领域
本发明涉及存储、检索技术领域,尤其涉及一种存储、检索照片的方法及装置。
背景技术
随着照片数据量的日益增长,对照片存储和访问管理难度越来越大,对于大多数***,在大规模的小文件存储与读取时,因为磁头需要频繁的寻道和换道,因此在读取上容易带来较长的延时,尤其在大量高并发访问量的情况下,大大降低了读取效果。传统基于可移植操作***接口(Portable Operating System Interface,POSIX)的文件***的缺点主要是目录和每个文件的元数据。对于图片应用,很多元数据(比如文件权限),是无用的而且浪费了很多存储容量。而且更大的性能消耗在于文件的元数据必须从磁盘读到内存来定位文件。文件规模较小时这些花费无关紧要,然而面对TB级别图片和PB级别的数据,访问元数据就是吞吐量瓶颈所在;且很难提供对照片统计、分析的功能。
目前采用的照片存储***,存在有以下弊端:
读写慢:大规模的小文件存储与读取,磁头需要频繁的寻道和换道。
提供的服务单一:采用目录和文件名称来存储和定位数据。
稳定性低:依赖外包开发的***,存在大量漏洞。
安全性差:当存储的磁盘出现问题,全部照片服务无法使用。
成本高:购买外包照片***和高性能的磁盘。
发明内容
本发明实施例的技术方案在于提供一种存储、检索照片的方法及装置,旨在解决现有技术中照片存储***读写慢、稳定性低、安全性差以及成本高的问题。
本发明实施例提供一种存储、检索照片的方法,包括:
根据待存储照片的预设第一类属性,设置待存储照片的行键值rowkey;
获取待存储照片的预设第二类属性,建立待存储照片的第二类属性与所述rowkey之间的关联;
按照所述rowkey的字符顺序,将待存储照片的数据作为hbase表的列值存储在hbase中;
接收客户端发送的查询请求,根据所述查询请求中携带的第一类属性和/或第二类属性的查询条件,在hbase中查询与所述查询请求匹配的照片。
其中,所述第一类属性包括:地理位置信息、拍摄时间信息、类别信息以及用户ID信息中的任一种或者任意几种的组合;
所述第二类属性至少包括:地理位置信息、拍摄时间信息、类别信息、用户ID信息以及照片名称信息中区别于所述第一类属性的信息。
其中,所述根据待存储照片的预设第一类属性,设置待存储照片的行键值rowkey,具体为:
将所述第一类属性转化为字符串作为待存储照片的所述rowkey。
其中,所述获取待存储照片的预设第二类属性,建立待存储照片的第二类属性与所述rowkey之间的关联,包括:
根据待存储照片的所述第二类属性在solr上建立索引;
建立索引与待存储照片的所述rowkey之间的一一对应关系。
其中,所述按照所述rowkey的字符顺序,将待存储照片的数据作为hbase表的列值存储在hbase中,包括:
获取待存储照片转换为字节数组后的数据;
获取待存储照片的所述rowkey的字符,按照预设的字符顺序,将待存储照片转换为字节数组后的数据作为hbase表的列值存储在hbase中的相应位置。
其中,所述根据所述查询请求中携带的第一类属性和/或第二类属性的查询条件,在hbase中查询与所述查询请求匹配的照片之后,所述方法还包括:
获取客户端所支持的数据格式;
将查找到的与所述查询请求匹配的照片转化为客户端所支持的数据格式进行传输。
本发明实施例该提供一种存储、检索照片的装置,包括:
设置模块,用于根据待存储照片的预设第一类属性,设置待存储照片的行键值rowkey;
建立模块,用于获取待存储照片的预设第二类属性,建立待存储照片的第二类属性与所述rowkey之间的关联;
存储模块,用于按照所述rowkey的字符顺序,将待存储照片的数据作为hbase表的列值存储在hbase中;
查找模块,用于接收客户端发送的查询请求,根据所述查询请求中携带的第一类属性和/或第二类属性的查询条件,在hbase中查询与所述查询请求匹配的照片。
其中,所述设置模块中的第一类属性包括:地理位置信息、拍摄时间信息、类别信息以及用户ID信息中的任一种或者任意几种的组合;
所述建立模块中的第二类属性至少包括:地理位置信息、拍摄时间信息、类别信息、用户ID信息以及照片名称信息中区别于所述第一类属性的信息。
其中,所述设置模块进一步用于:
将所述第一类属性转化为字符串作为待存储照片的所述rowkey。
其中,所述建立模块包括:
第一建立子模块,用于根据待存储照片的所述第二类属性在solr上建立索引;
第二建立子模块,用于建立索引与待存储照片的所述rowkey之间的一一对应关系。
其中,所述存储模块包括:
获取子模块,用于获取待存储照片转换为字节数组后的数据;
处理子模块,用于获取待存储照片的所述rowkey的字符,按照预设的字符顺序,将待存储照片转换为字节数组后的数据作为hbase表的列值存储在hbase中的相应位置。
其中,所述装置还包括:
获取模块,用于在所述查找模块根据所述查询请求中携带的第一类属性和/或第二类属性的查询条件,在hbase中查询与所述查询请求匹配的照片之后,获取客户端所支持的数据格式;
转化模块,用于将查找到的与所述查询请求匹配的照片转化为客户端所支持的数据格式进行传输。
本发明实施例上述技术方案至少包括如下有益效果:
通过获取待存储照片的预设第一类属性,设置待存储照片的rowkey,获取待存储照片的预设第二类属性,建立待存储照片的第二类属性与rowkey之间的关联,采用hbase的列存储机制,将待存储照片的数据作为hbase表的列值,使用hdfs对照片进行存储,根据客户端发送的查询请求中携带的第一类属性和/或第二类属性的查询条件,在hbase中查询与查询请求匹配的照片,可以实现基于HDFS进行照片数据的高容量且快速存储,同时具有高可用性、检索快速的优点,可充分发挥IO吞吐能力,成本较低,提高了用户的体验性。
附图说明
图1为本发明实施例的存储、检索照片的方法流程示意图一;
图2为本发明实施例的存储、检索照片的方法流程示意图二;
图3为本发明实施例的存储、检索照片的方法流程示意图三;
图4为本发明实施例的照片存储流程示意图;
图5为本发明实施例的照片存储框图;
图6为本发明实施例客户端与照片***传递数据示意图;
图7为本发明实施例的存储、检索照片的装置示意图一;
图8为本发明实施例的存储、检索照片的装置示意图二。
具体实施方式
为使本发明要解决的技术问题、技术方案和优点更加清楚,下面将结合附图及具体实施例进行详细描述。
本发明实施例提供一种存储、检索照片的方法及装置,采用hbase和solr对照片进行处理,使其存储在hdfs上,其中hbase存储照片信息,solr存储照片的搜索索引信息。
本方案需要搭建完成hdfs、hbase、solr集群,然后对三者进行整合,使得hbase的表文件和solr的索引文件都存储在hdfs上。
下面对三个集群功能进行简单介绍:
Hadoop集群:
Hadoop是一个分布式文件***(Hadoop Distributed File System,HDFS)。HDFS有高容错性的特点,并且设计用来部署在低廉的硬件上;提供高吞吐量来访问应用程序的数据,适合那些有着超大数据集的应用程序。HDFS放宽了POSIX的要求,可以以流的形式访问文件***中的数据。Hadoop的框架最核心的设计就是:HDFS和编程模型MapReduce。HDFS为海量的数据提供了存储,MapReduce为海量的数据提供了计算。MapReduce是Google提出的一个软件架构,用于大规模数据集的并行计算。
HBase集群:
HBase(Hadoop Database)是一个分布式的、面向列的开源数据库,该技术来源于Fay Chang所撰写的Google论文“Bigtable:一个结构化数据的分布式存储***”。就像Bigtable利用了Google文件***所提供的分布式数据存储一样,HBase在Hadoop之上提供了类似于Bigtable的能力。HBase是Apache的Hadoop项目的子项目。HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。另一个不同的是HBase基于列的而不是基于行的模式。HBase是一个高可靠性、高性能、面向列、可伸缩的分布式存储***,利用HBase技术可在廉价PC服务器上搭建起大规模结构化存储集群。
solr集群:
Solr是一个高性能,采用Java5开发,基于全文检索引擎的架构Lucene的全文搜索服务器。同时对其进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展并对查询性能进行了优化,并且提供了一个完善的功能管理界面,是一款非常优秀的全文搜索引擎。
本发明实施例一种存储、检索照片的方法,如图1所示,包括:
S100、根据待存储照片的预设第一类属性,设置待存储照片的行键值rowkey;
S200、获取待存储照片的预设第二类属性,建立待存储照片的第二类属性与rowkey之间的关联;
S300、按照rowkey的字符顺序,将待存储照片的数据作为hbase表的列值存储在hbase中;
S400、接收客户端发送的查询请求,根据查询请求中携带的第一类属性和/或第二类属性的查询条件,在hbase中查询与查询请求匹配的照片。
具体的,设置待存储照片的第一类属性和第二类属性,根据待存储照片的第一类属性,设置待存储照片的rowkey,根据待存储照片的预设第二类属性,建立待存储照片的第二类属性与rowkey之间的关联。即针对一待处理照片而言,根据待处理照片的第一类属性,例如照片的地理位置信息设置rowkey,然后获取待处理照片的第二类属性,例如第二类属性包括:拍摄时间信息和类别信息,建立第二类属性与rowkey的关联,即拍摄时间信息、类别信息与照片的地理位置信息是相互对应的,在查找照片的过程中,可以根据拍摄时间信息查找到对应的地理位置信息,也可以根据类别信息查找到对应的地理位置信息,进而查找到相应的照片。
在建立待存储照片的第二类属性与rowkey之间的关联之后,可以按照rowkey的字符顺序,将待存储照片的数据作为hbase表的列值存储在hbase中。然后根据客户端发送的查询请求中携带的第一类属性和/或第二类属性的查询条件,在hbase中查询与查询请求匹配的照片。
需要说明的是,当根据地理位置信息设置待存储照片的rowkey,在根据客户端发送的查询请求进行查询的过程中,查询请求中携带的是第一类属性地理位置信息时,将经纬度的二维关系使用geohash进行转换,得到一维字符串,其中geohash是一种将二维的经纬度转换成一维字符串的算法,然后将得到的一维字符串信息,与存储的rowkey值进行比较,获取与一维字符串信息匹配的rowkey,进而获取到相应的照片。
当根据地理位置信息设置待存储照片的rowkey,当第二类属性包括拍摄时间信息、类别信息、用户ID信息以及照片名称信息时,建立待存储照片的第二类属性与rowkey之间的关联。在根据客户端发送的查询请求进行查询的过程中,查询请求中携带的是第二类属性照片名称信息时,根据照片名称信息查找到相应的第二类属性,根据第二类属性与rowkey之间的关联,查找到对应的rowkey,进而获取到相应的照片。
在本发明上述实施例中,第一类属性包括:地理位置信息、拍摄时间信息、类别信息以及用户ID信息中的任一种或者任意几种的组合;相应的第二类属性包括:地理位置信息、拍摄时间信息、类别信息、用户ID信息以及照片名称信息中区别于第一类属性的信息。
具体的,当第一类属性为地理位置信息和用户ID信息的组合时,由于地理位置信息的经纬度是二维关系,需要使用geohash对经纬度进行转换,把二维关系转换为一维字符串。如表1所示:
纬度 | 经度 | geohash值 |
40.12288 | 117.09088 | wx5k22nuxqbj |
40.12187 | 117.08743 | wx5k0ruqyfet |
21.27364 | 110.36249 | w7y3p2exbmvj |
39.87317 | 116.64892 | wx4fy6tnhcdg |
39.86179 | 116.65084 | wx4fy2wec84x |
39.86035 | 116.65083 | wx4fy2qe37g1 |
39.8587 | 116.65082 | wx4fy2n9c05w |
39.85757 | 116.65081 | wx4fwrye0vs6 |
39.85493 | 116.65054 | wx4fwrq7f96v |
39.85288 | 116.65265 | wx4fwqzzgg23 |
表1
根据地理位置信息,将经纬度转化为字符串,由于同一点可能出现多张照片,还需要加上一个唯一ID才能组成唯一rowkey,最终的结果如表2所示:
纬度 | 经度 | rowkey值 |
40.12288 | 117.09088 | wx5k22nuxqbj0000000170 |
40.12187 | 117.08743 | wx5k0ruqyfet0000000171 |
21.27364 | 110.36249 | w7y3p2exbmvj0000000172 |
39.87317 | 116.64892 | wx4fy6tnhcdg0000000175 |
39.86179 | 116.65084 | wx4fy2wec84x0000000177 |
39.86035 | 116.65083 | wx4fy2qe37g10000000179 |
39.8587 | 116.65082 | wx4fy2n9c05w0000000180 |
39.85757 | 116.65081 | wx4fwrye0vs60000000181 |
39.85493 | 116.65054 | wx4fwrq7f96v0000000182 |
39.85288 | 116.65265 | wx4fwqzzgg230000000183 |
表2
按照该方式存储后,根据hbase按照rowkey的字符顺序存储规则,只要传入左下角和右上角点经纬度的geohash值,作为起始Rowkey和终止Rowkey,即可获取该区域内的照片信息,例如获取矩形范围(39.8587 116.65082、39.8587 117.08743、40.12187 117.08743、40.12187 116.65082、39.8587 116.65082)的照片信息,只要使用左下角(39.8587116.65082)的geohash值:wx4fy2n9c05w作为起始Rowkey,右上角(40.12187 117.08743)的geohash值:wx5k0ruqyfet作为终止Rowkey,通过地理位置的区域范围获取照片数据。
进一步的,在现实获取照片时,查找方式可能是多种多样的,区域范围查找,并不能满足需求,此时使用solr在照片录入时,添加对应需要的索引,使其关联到要查找照片的rowkey上,即可实时、高效定位照片,例如对照片名称、类别、拍摄日期时间等进行等建立solr索引,利用solr来实时查找、统计、分析照片。
在本发明上述实施例中,如图2所示,步骤S200包括:
S201、根据待存储照片的第二类属性在solr上建立索引;
S202、建立索引与待存储照片的rowkey之间的一一对应关系。
具体的,当在根据第一类属性,设置待存储照片的rowkey之后,需要建立待存储照片的第二类属性与rowkey之间的关联,可以根据客户端输入的不同的查询条件查找到对应的照片。
在建立待存储照片的第二类属性与rowkey之间的关联时,根据待存储照片的第二类属性在solr上建立索引,然后建立索引与rowkey之间的对应关系。例如:针对一待存储照片A,获取照片A的第二类属性,在solr上建立照片A的第二类属性的索引a,然后建立索引a与照片A的rowkey之间的一一对应。从而可以形成照片A的第二类属性与照片A的rowkey之间的关联。
当照片A的第一类属性为拍摄时间信息时,根据拍摄时间信息设置照片A的rowkey,然后获取照片A的第二类属性,此时照片A的第二类属性可以包括:地理位置信息、名称信息、用户ID等,根据照片A的第二类属性在solr上建立照片A的第二类属性的索引a,建立索引a与照片A的rowkey之间的对应,进而可以建立照片A的第二类属性:地理位置信息、名称信息、用户ID与照片A的第一类属性:拍摄时间信息的关联。
当客户端在输入查询条件时,可以输入拍摄时间信息、地理位置信息、名称信息或用户ID,当客户端输入拍摄时间信息时,可以直接对应到相应的多个rowkey,获取相应的在该时刻拍摄的所有照片。
当客户端输入拍摄时间信息和地理位置信息时,根据拍摄时间信息对应到相应的多个rowkey,可以获得在该时刻拍摄的所有照片,由于客户端同时输入了地理位置信息,可以根据地理位置信息对应到相应的索引,根据索引与rowkey之间的关联,进而对应到相应的rowkey,此时可以获取到在该时刻、该地理位置上拍摄的照片。
当客户端输入地理位置信息时,根据地理位置信息对应到相应的索引,根据索引与rowkey之间的关联,进而对应到相应的rowkey,此时可以获取到在地理位置上拍摄的照片。
在本发明上述实施例中,在建立完成待存储照片的第二类属性与待存储照片的rowkey之间的关联之后,需要将待存储照片的数据作为hbase表的列值存储在hbase中,如图3所示,步骤S300包括:
S301、获取待存储照片转换为字节数组后的数据;
S302、获取待存储照片的rowkey的字符,按照预设的字符顺序,将待存储照片转换为字节数组后的数据作为hbase表的列值存储在hbase中的相应位置。
具体的,在将待存储照片的数据进行存储的过程中,需要使用一个列族data,分别存储照片转换为字节数组后的值、对应该照片缩略图转换为字节数组后的值以及照片的第二类属性信息。rowkey等同于关系型数据库的主键,但存储方式不同,hbase数据存储顺序是按照rowkey值的字符顺序存储的。例如,照片A的rowkey值为wx5k22nuxqbj0000000170,照片B的rowkey值为wx5k0ruqyfet0000000171,照片C的rowkey值为w7y3p2exbmvj0000000172,在对照片A、B、C存储的过程中,按照字符先后顺序进行存储,即存储顺序依次为:照片A、照片B和照片C。
进一步的,在对照片A、照片B和照片C进行存储的过程中,实际为对照片A的列、照片B的列以及照片C的列进行存储。需要说明的是,列中存储的照片缩略图,其目的是可以使得用户对查找到的照片进行浏览。列中存储的照片的第二类属性信息,其目的是可以提供更多的查询依据。若仅根据rowkey来进行查找,若客户端输入的查询条件不是rowkey所对应的第一类属性信息,则无法进行查找。
需要说明的是,对照片缩略图转换为字节数组后的值以及照片的第二类属性信息进行存储,并不是一个必要的存储,对照片缩略图转换为字节数组后的值进行存储的目的在于便于对查找到的照片进行浏览,对第二类属性信息进行存储的目的在于提供更多的查询依据。本领域技术人员,可以根据需要来选择是否存储照片缩略图以及照片的第二类属性。
如图4所示,为本发明实施例的照片存储流程图。首先客户端上传照片,然后生成照片字节流和索引,将照片字节流和索引传输至照片***进行存储。如图5所示,为本发明实施例将hbase和solr存储在hdfs上的框图。
在本发明上述实施例中,再将待存储照片的数据作为hbase表的列值存储在hbase中之后,需要根据客户端发送的查询请求,根据查询请求中携带的第一类属性和/或第二类属性的查询条件,在hbase中查询与查询请求匹配的照片。
具体的,当第一类属性为地理位置信息,第二类属性包括:拍摄时间信息、类别信息、用户ID信息以及照片名称信息时。可以根据客户端发送的查询请求携带的不同的查询条件查询相应的照片。当客户端发送的查询请求携带的是地理位置信息时,根据地理位置信息对应到相应的rowkey,获取相应的照片,此时获取得到的可能是多张照片。
当客户端发送的查询请求携带的是拍摄时间信息时,根据拍摄时间信息对应到相应的solr上的索引,根据索引与rowkey的对应关系,查找到相应的照片,此时获取得到的可能是多张照片。
当客户端发送的查询请求携带的是地理位置信息和用户ID信息时,根据地理位置信息对应到相应的rowkey,获取相应的照片,此时获取得可能是多张照片,再根据用户ID信息对应到相应的solr上的索引,根据索引与rowkey的对应关系,查找到相应的照片,此时由于结合了地理位置信息与用户ID信息,可以得到确定数目的照片。即当用户A在某一位置上拍摄了3张照片且都进行了存储,则此时可以获取到这3张照片。
HBase的查询支持3种方式:
1、通过单个Rowkey访问,即按照某个Rowkey进行操作,这样获取唯一一条记录;
2、通过设置起始RowKey和终止RowKey,在这个范围内进行扫描,这样可以按指定的条件获取一批记录;
3、全表扫描,即直接扫描整张表中所有行记录。
第一种和第二种是我们需要经常使用的,第三种只用来做照片离线分析。
需要说明的是,当多个客户端同时发送查询请求时,nginx接收到多个查询请求,将接收到的查询请求分发至多个tomcat,可以使得tomcat承载的负载较为均衡,减少nginx的承载量。需要说明的是,nginx是HTTP服务器软件,可以通过设置实现许多功能,如负载均衡、目录保护、IP访问限制、防盗链、下载限速及设置多域名等。tomcat是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务器。如图6所示,客户端发送多个查询请求,nginx将接收到的多个查询请求分发至多个tomcat,tomcat根据查询请求在照片***中查询相应的照片,然后将查询到的照片返回至nginx,由nginx将照片返回至客户端。
在查询到与查询请求匹配的照片之后,需要将照片数据传输至客户端,在传输之前,需要获取客户端所支持的数据格式,将查找到照片转化为客户端所支持的数据格式进行传输。当客户端是WEB浏览器时,那就需要生成image/jpeg格式的数据流格式进行传输。
本发明实施例还提供一种存储、检索照片的装置,如图7所示,包括:
设置模块10,用于根据待存储照片的预设第一类属性,设置待存储照片的行键值rowkey;
建立模块20,用于获取待存储照片的预设第二类属性,建立待存储照片的第二类属性与rowkey之间的关联;
存储模块30,用于按照rowkey的字符顺序,将待存储照片的数据作为hbase表的列值存储在hbase中;
查找模块40,用于接收客户端发送的查询请求,根据查询请求中携带的第一类属性和/或第二类属性的查询条件,在hbase中查询与查询请求匹配的照片。
其中,设置模块10中的第一类属性包括:地理位置信息、拍摄时间信息、类别信息以及用户ID信息中的任一种或者任意几种的组合;
建立模块20中的第二类属性至少包括:地理位置信息、拍摄时间信息、类别信息、用户ID信息以及照片名称信息中区别于第一类属性的信息。
其中,设置模块10进一步用于:
将第一类属性转化为字符串作为待存储照片的rowkey。
其中,如图8所示,建立模块20包括:
第一建立子模块21,用于根据待存储照片的第二类属性在solr上建立索引;
第二建立子模块22,用于建立索引与待存储照片的rowkey之间的一一对应关系。
其中,存储模块30包括:
获取子模块31,用于获取待存储照片转换为字节数组后的数据;
处理子模块32,用于获取待存储照片的rowkey的字符,按照预设的字符顺序,将待存储照片转换为字节数组后的数据作为hbase表的列值存储在hbase中的相应位置。
其中,该装置还包括:
获取模块50,用于在查找模块40根据查询请求中携带的第一类属性和/或第二类属性的查询条件,在hbase中查询与查询请求匹配的照片之后,获取客户端所支持的数据格式;
转化模块60,用于将查找到的与查询请求匹配的照片转化为客户端所支持的数据格式进行传输。
本发明实施例存储、检索照片的方法,通过获取待存储照片的预设第一类属性,设置待存储照片的rowkey,获取待存储照片的预设第二类属性,建立待存储照片的第二类属性与rowkey之间的关联,采用hbase的列存储机制,将待存储照片的数据作为hbase表的列值,使用hdfs对照片进行存储,根据客户端发送的查询请求中携带的第一类属性和/或第二类属性的查询条件,在hbase中查询与查询请求匹配的照片,可以实现基于HDFS进行照片数据的高容量且快速存储,同时具有高可用性、检索快速的优点,可充分发挥IO吞吐能力,成本较低,提高了用户的体验性。
需要说明的是,本发明实施例提供的存储、检索照片的装置是应用上述方法的装置,则上述方法的所有实施例均适用于该装置,且均能达到相同或相似的有益效果。
以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明所述原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (6)
1.一种存储、检索照片的方法,其特征在于,包括:
根据待存储照片的预设第一类属性,设置待存储照片的行键值rowkey;
获取待存储照片的预设第二类属性,建立待存储照片的第二类属性与所述rowkey之间的关联,所述第二类属性与所述第一类属性不同;
按照所述rowkey的字符顺序,将待存储照片的数据作为hbase表的列值存储在hbase中;
接收客户端发送的查询请求,根据所述查询请求中携带的第一类属性和/或第二类属性的查询条件,在hbase中查询与所述查询请求匹配的照片;
所述按照所述rowkey的字符顺序,将待存储照片的数据作为hbase表的列值存储在hbase中,包括:
获取待存储照片转换为字节数组后的数据;
获取待存储照片的所述rowkey的字符,按照预设的字符顺序,将待存储照片转换为字节数组后的数据作为hbase表的列值存储在hbase中的相应位置;
所述第一类属性包括:地理位置信息、拍摄时间信息、类别信息以及用户ID信息中的任一种或者任意几种的组合;
所述第二类属性至少包括:地理位置信息、拍摄时间信息、类别信息、用户ID信息以及照片名称信息中区别于所述第一类属性的信息;
所述根据待存储照片的预设第一类属性,设置待存储照片的行键值rowkey,具体为:
将所述第一类属性转化为字符串作为待存储照片的所述rowkey。
2.如权利要求1所述的方法,其特征在于,所述获取待存储照片的预设第二类属性,建立待存储照片的第二类属性与所述rowkey之间的关联,包括:
根据待存储照片的所述第二类属性在solr上建立索引;
建立索引与待存储照片的所述rowkey之间的一一对应关系。
3.如权利要求1所述的方法,其特征在于,所述根据所述查询请求中携带的第一类属性和/或第二类属性的查询条件,在hbase中查询与所述查询请求匹配的照片之后,所述方法还包括:
获取客户端所支持的数据格式;
将查找到的与所述查询请求匹配的照片转化为客户端所支持的数据格式进行传输。
4.一种存储、检索照片的装置,其特征在于,包括:
设置模块,用于根据待存储照片的预设第一类属性,设置待存储照片的行键值rowkey;
建立模块,用于获取待存储照片的预设第二类属性,建立待存储照片的第二类属性与所述rowkey之间的关联,所述第二类属性与所述第一类属性不同;
存储模块,用于按照所述rowkey的字符顺序,将待存储照片的数据作为hbase表的列值存储在hbase中;
查找模块,用于接收客户端发送的查询请求,根据所述查询请求中携带的第一类属性和/或第二类属性的查询条件,在hbase中查询与所述查询请求匹配的照片;
所述存储模块包括:
获取子模块,用于获取待存储照片转换为字节数组后的数据;
处理子模块,用于获取待存储照片的所述rowkey的字符,按照预设的字符顺序,将待存储照片转换为字节数组后的数据作为hbase表的列值存储在hbase中的相应位置;
所述设置模块中的第一类属性包括:地理位置信息、拍摄时间信息、类别信息以及用户ID信息中的任一种或者任意几种的组合;
所述建立模块中的第二类属性至少包括:地理位置信息、拍摄时间信息、类别信息、用户ID信息以及照片名称信息中区别于所述第一类属性的信息;
所述设置模块进一步用于:
将所述第一类属性转化为字符串作为待存储照片的所述rowkey。
5.如权利要求4所述的装置,其特征在于,所述建立模块包括:
第一建立子模块,用于根据待存储照片的所述第二类属性在solr上建立索引;
第二建立子模块,用于建立索引与待存储照片的所述rowkey之间的一一对应关系。
6.如权利要求4所述的装置,其特征在于,所述装置还包括:
获取模块,用于在所述查找模块根据所述查询请求中携带的第一类属性和/或第二类属性的查询条件,在hbase中查询与所述查询请求匹配的照片之后,获取客户端所支持的数据格式;
转化模块,用于将查找到的与所述查询请求匹配的照片转化为客户端所支持的数据格式进行传输。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510883423.7A CN106844374B (zh) | 2015-12-04 | 2015-12-04 | 一种存储、检索照片的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510883423.7A CN106844374B (zh) | 2015-12-04 | 2015-12-04 | 一种存储、检索照片的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106844374A CN106844374A (zh) | 2017-06-13 |
CN106844374B true CN106844374B (zh) | 2020-04-03 |
Family
ID=59150161
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510883423.7A Active CN106844374B (zh) | 2015-12-04 | 2015-12-04 | 一种存储、检索照片的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106844374B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108197321B (zh) * | 2018-02-02 | 2018-12-28 | 清华大学 | 文件存储方法及*** |
CN108647290A (zh) * | 2018-05-06 | 2018-10-12 | 深圳市保千里电子有限公司 | 基于HBase的互联网手机云相册备份查询方法及*** |
CN109086451A (zh) * | 2018-08-24 | 2018-12-25 | 江苏神州信源***工程有限公司 | 一种图片存储与检索方法与装置 |
CN111753141B (zh) * | 2019-03-26 | 2024-06-11 | 华为技术有限公司 | 一种数据管理方法及相关设备 |
CN111737316A (zh) * | 2020-06-19 | 2020-10-02 | 广联达科技股份有限公司 | 一种工程清单查询方法、装置、计算机设备和存储介质 |
CN112434015B (zh) * | 2020-12-08 | 2022-08-19 | 新华三大数据技术有限公司 | 数据存储的方法、装置、电子设备及介质 |
CN112711483A (zh) * | 2020-12-10 | 2021-04-27 | 广州广电运通金融电子股份有限公司 | 一种处理大数据标注服务高并发方法、***及设备 |
CN114496176B (zh) * | 2022-04-06 | 2022-09-27 | 广州思德医疗科技有限公司 | 一种图片存储和提取方法、***及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102750356A (zh) * | 2012-06-11 | 2012-10-24 | 清华大学 | 一种键值库辅助索引的构建与管理方法 |
CN103116610A (zh) * | 2013-01-23 | 2013-05-22 | 浙江大学 | 基于HBase的矢量空间大数据存储方法 |
US8760692B2 (en) * | 2010-08-16 | 2014-06-24 | Canon Kabushiki Kaisha | System, apparatus, method, and computer program for information processing resource adjustment |
CN104102710A (zh) * | 2014-07-15 | 2014-10-15 | 浪潮(北京)电子信息产业有限公司 | 一种海量数据查询方法 |
CN105117502A (zh) * | 2015-10-13 | 2015-12-02 | 四川中科腾信科技有限公司 | 一种基于大数据的检索方法 |
-
2015
- 2015-12-04 CN CN201510883423.7A patent/CN106844374B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8760692B2 (en) * | 2010-08-16 | 2014-06-24 | Canon Kabushiki Kaisha | System, apparatus, method, and computer program for information processing resource adjustment |
CN102750356A (zh) * | 2012-06-11 | 2012-10-24 | 清华大学 | 一种键值库辅助索引的构建与管理方法 |
CN103116610A (zh) * | 2013-01-23 | 2013-05-22 | 浙江大学 | 基于HBase的矢量空间大数据存储方法 |
CN104102710A (zh) * | 2014-07-15 | 2014-10-15 | 浪潮(北京)电子信息产业有限公司 | 一种海量数据查询方法 |
CN105117502A (zh) * | 2015-10-13 | 2015-12-02 | 四川中科腾信科技有限公司 | 一种基于大数据的检索方法 |
Also Published As
Publication number | Publication date |
---|---|
CN106844374A (zh) | 2017-06-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106844374B (zh) | 一种存储、检索照片的方法及装置 | |
US8934723B2 (en) | Presentation and organization of content | |
US9055063B2 (en) | Managing shared content with a content management system | |
US7508419B2 (en) | Image exchange with image annotation | |
TWI299456B (en) | Media asset management system for managing video segments from an aerial sensor platform and associated methods | |
CN102725755B (zh) | 文件访问方法及*** | |
CN103631909B (zh) | 对大规模结构化和非结构化数据联合处理的***及方法 | |
CN103150362B (zh) | 一种视频搜索方法及*** | |
US20120011129A1 (en) | Faceted exploration of media collections | |
KR20130049111A (ko) | 분산 처리를 이용한 포렌식 인덱스 방법 및 장치 | |
CN102682036A (zh) | 一种基于非编***的媒资检索方法和*** | |
Dašić et al. | Service models for cloud computing: Search as a service (SaaS) | |
US20140317128A1 (en) | Natural language search | |
CN113377876B (zh) | 基于Domino平台的数据分库处理方法、装置及平台 | |
Samundiswary et al. | Object storage architecture in cloud for unstructured data | |
CN114297145A (zh) | 一种ipfs节点本地基于关键词搜索文件的方法、介质及*** | |
Alsubaiee et al. | Asterix: scalable warehouse-style web data integration | |
Ergüzen et al. | An efficient middle layer platform for medical imaging archives | |
KR102002360B1 (ko) | 영상 처리용 NoSQL 데이터베이스 구축 방법 및 장치 | |
Li et al. | MR‐tree: an efficient index for MapReduce | |
Pan et al. | Research on mass image data storage method for data center | |
EP3273365B1 (en) | Method for generating search index and server utilizing the same | |
Miao | Research on the application of cloud computing technology in computer data processing | |
Zhou et al. | HDKV: supporting efficient high‐dimensional similarity search in key‐value stores | |
Sajarwo et al. | Index data structure, functionality and microservices in thematic virtual museums |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |