SlideShare a Scribd company logo
14
Most read
16
Most read
17
Most read
PostgreSQL画像データ収集・格納
目次
問題意識
仮説
ターゲット
実装
まとめ
問題意識
変化の激しい世の中において、常に技術を追いかけ
高いパフォーマンスが求められる
仕事でより高いパフォーマンスを上げるために、癒
しが必要
自宅のうさぎが癒し業をボイコット中
仮説
うさぎ画像をみれば癒される!?
googleうさぎ検索!!
PostgreSQL画像データ収集・格納
やりたいこと
うさぎ検索結果から画像を抜き出す
↓
ローカルに画像を保存
↓
PostgreSQLで画像情報を管理する!
ターゲット
非営利目的での再利用が許可された画像に限定
取得した画像は、個人でただ、癒されるためだけに利
用
PostgreSQL画像データ収集・格納
PostgreSQL画像データ収集・格納
↑このときのURLに検索条件が入っている!
PostgreSQL画像データ収集・格納
画像を自動で抜き出す
地道に正規表現でがんばる
<img height="90" src="https://encrypted-
tbn2.gstatic.com/images?q=tbn:ANd9GcTwTK9
5XZfQyU-HGdMSgxUy78nhw-
XdpkcA3qwL0fv7sBJm-EOuZ1Nnicw"
width="136" alt="「うさぎ」の画像検索結果">
→リンクから、画像をローカルにダウンロード!
PostgreSQL画像データ収集・格納
画像をどうやって管理する?
方法は基本3つ
説明 検索性能 備考
bytea PostgreSQLの型の
1つ。バイナリを保
存する。
△ データ量が多くなる
と性能劣化。
ラージオブジェクト 大きなデータを扱
うための仕組み
◯ lo_import()などを使
う。
外部ファイル 画像自体はDBに保
存せず、画像への
パスを保存。
◯ 画像自体の更新は
DBで管理できない。
bytea vs large Object
https://www.microolap.com/products/connectivity/postgresdac/help/tipsandtrick
s_byteavsoid.htm
今回実施した手順
ラージオブジェクトのOID保存テーブルを作成
=# create table image(object_id oid);
ファイルからラージオブジェクトをimport
=# insert into image values
(lo_import('/home/postgres/1'));
<?php
$filename="https://www.google.co.jp/search?as_st=y&tbm=isch&hl=ja&as_q=%E3%81%86%E3%81%
95%E3%81%8E&as_epq=&as_oq=&as_eq=&cr=&as_sitesearch=&safe=images&tbs=sur:f#q=%E3%8
1%86%E3%81%95%E3%81%8E&as_st=y&hl=ja&tbs=sur:f,qdr:w&tbm=isch&imgrc=_";
$pattern = '/img height=".*?" src=.*?alt="「うさぎ」の画像検索結果"/';
$html = file_get_contents($filename);
$path = '/home/postgres/';
mb_language("Japanese");
$subject = mb_convert_encoding($html,'UTF-8','auto');
preg_match_all($pattern, $subject, $matched);
for( $i = 0; $i < count($matched[0]) ; $i++){
$yobun = '/" width=".*?" alt="「うさぎ」の画像検索結果"/';
$yobun2 = '/img height=".*?" src="/';
$data = preg_replace($yobun, "", $matched[0][$i]);
$data = preg_replace($yobun2, "", $data);
$image = file_get_contents($data);
file_put_contents($path.$i,$image);
$con = pg_connect("dbname=postgres user=postgres");
$sql = "INSERT INTO image VALUES(lo_import('".$path.$i."'));";
pg_set_client_encoding($con, "UTF-8");
$res = pg_query($con,$sql);
pg_close($con);
}
結果
画像フォルダがうさぎ画像でいっぱいに!!
今回の取り組みの結果、たとえオフラインでも、
googleが突然使えなくなっても手元にうさ画像があ
る
広がる夢
「常に最新のうさぎ画像」を集めるべく収集対象を
最新の画像に絞るという夢
cron等の自動実行により確実に収集するという夢
可愛いうささんだけ集めたいという夢
おわり
ZZZ

More Related Content

PPTX
Azure Cosmos DB のキホンと使いドコロ
PDF
もうひとつのアンチパターン OTLT、あるいは如何にして私はオレオレフレームワークを忌み嫌うようになったか
PDF
マルチテナント化で知っておきたいデータベースのこと
PDF
君はyarn.lockをコミットしているか?
PPTX
やってはいけない空振りDelete
PDF
SQLアンチパターン読書会 第10章 サーティワンフレーバー
PDF
Where狙いのキー、order by狙いのキー
ODP
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
Azure Cosmos DB のキホンと使いドコロ
もうひとつのアンチパターン OTLT、あるいは如何にして私はオレオレフレームワークを忌み嫌うようになったか
マルチテナント化で知っておきたいデータベースのこと
君はyarn.lockをコミットしているか?
やってはいけない空振りDelete
SQLアンチパターン読書会 第10章 サーティワンフレーバー
Where狙いのキー、order by狙いのキー
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える

What's hot (20)

PPTX
AWSメンテナンス ElastiCache編
PPTX
SQLチューニング入門 入門編
PDF
pg_bigmと類似度検索
PPTX
失敗から学ぶAWSの監視
PDF
cyREST入門~RとCytoscapeのAPI連携~
PDF
pg_hint_planを知る(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
PDF
DynamoDB設計のちょっとした技
PDF
今からでも大丈夫!Firebase入門
PDF
PostgreSQLアーキテクチャ入門(INSIGHT OUT 2011)
PDF
アルゴリズムのイメージを擬人化する
PDF
AWS初心者向けWebinar AWS上でのDDoS対策
PDF
RESTfulとは
PDF
Elasticsearch の検索精度のチューニング 〜テストを作って高速かつ安全に〜
PDF
ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
PDF
マルチテナントのアプリケーション実装〜実践編〜
PPT
Cassandraのしくみ データの読み書き編
PPTX
Azure Search 言語処理関連機能 〜 アナライザー、検索クエリー、辞書、& ランキング, etc
PDF
ニュースパスのクローラーアーキテクチャとマイクロサービス
PDF
SolrとElasticsearchを比べてみよう
PDF
Jokyo20110711
AWSメンテナンス ElastiCache編
SQLチューニング入門 入門編
pg_bigmと類似度検索
失敗から学ぶAWSの監視
cyREST入門~RとCytoscapeのAPI連携~
pg_hint_planを知る(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
DynamoDB設計のちょっとした技
今からでも大丈夫!Firebase入門
PostgreSQLアーキテクチャ入門(INSIGHT OUT 2011)
アルゴリズムのイメージを擬人化する
AWS初心者向けWebinar AWS上でのDDoS対策
RESTfulとは
Elasticsearch の検索精度のチューニング 〜テストを作って高速かつ安全に〜
ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
マルチテナントのアプリケーション実装〜実践編〜
Cassandraのしくみ データの読み書き編
Azure Search 言語処理関連機能 〜 アナライザー、検索クエリー、辞書、& ランキング, etc
ニュースパスのクローラーアーキテクチャとマイクロサービス
SolrとElasticsearchを比べてみよう
Jokyo20110711
Ad

Viewers also liked (20)

PDF
PostgreSQL監査
PPTX
Scaling MongoDB on AWS
PDF
マイクロサービスバックエンドAPIのためのRESTとgRPC
PPTX
PostgreSQL JSON型と Facebook APIを使って webアプリ開発をした話
PDF
PDF
Develipers.IO 2016 E-1 「AWS Configを使ったAWS環境の見える化」
PPT
Gestão para a qualidade - um exemplo
PPTX
Raspberry Pi를 이용한 얼굴 표정과 감정인식 시스템 개발
PPTX
Los Fármacos Drogas y Adicciones
PDF
Hotel Del Coronado Custom Gifts by Classic Legacy
PDF
MySQL 5.7 InnoDB 日本語全文検索(その2)
PDF
An overview of Amazon Athena
PDF
Phantom Type in Scala
PDF
ビーコンをつかうIoTアプリケーション
PDF
Optimize Your VMware SDDC with IBM Infrastructure
PDF
Impression of realm java
PDF
CAPとBASEとEventually Consistent
PDF
PostgreSQLアーキテクチャ入門(PostgreSQL Conference 2012)
PDF
Apache Hiveの今とこれから
PDF
JDV for Codemotion Rome 2017
PostgreSQL監査
Scaling MongoDB on AWS
マイクロサービスバックエンドAPIのためのRESTとgRPC
PostgreSQL JSON型と Facebook APIを使って webアプリ開発をした話
Develipers.IO 2016 E-1 「AWS Configを使ったAWS環境の見える化」
Gestão para a qualidade - um exemplo
Raspberry Pi를 이용한 얼굴 표정과 감정인식 시스템 개발
Los Fármacos Drogas y Adicciones
Hotel Del Coronado Custom Gifts by Classic Legacy
MySQL 5.7 InnoDB 日本語全文検索(その2)
An overview of Amazon Athena
Phantom Type in Scala
ビーコンをつかうIoTアプリケーション
Optimize Your VMware SDDC with IBM Infrastructure
Impression of realm java
CAPとBASEとEventually Consistent
PostgreSQLアーキテクチャ入門(PostgreSQL Conference 2012)
Apache Hiveの今とこれから
JDV for Codemotion Rome 2017
Ad

PostgreSQL画像データ収集・格納