MovieJukeBox の イメージデータをすべて FILESTREAM で保存するように変更した

 

現在進行形で、TMDbからTVドラマ情報を取得して、取得した情報を SQL Server のデータベースへ登録するようなものを作成している。

SQL Server は 2014 のExpress なので、1DBあたりの容量が10GBに制限されている。これまで登録した映画情報のポスター、ファンアート、俳優やスタッフの画像のデータ量は10GBを超えるので、それぞれDBを分けて管理していた。DBを分けていたので、ASP.NETやストアドプロシージャからは複数のDB接続に接続する必要があった。

SQL Server の FILESTREAM を利用して画像を登録する では、画像をバイナリとしてデータベースに保存していたのを、FILESTREAM でデータベースの外側に保存する方式に移行することを確認した。そこで、TVドラマ情報の画像登録も FILESTREAM として保存するが、その前に MovieJukeBox について画像をすべて FILESTREAM として保存するように変更した。

FILESTREAM への変更に当たっては、ほとんどの修正作業がDB側となるので、本番環境で修正した。

  • テーブル構造の変更(3行目で ROWGUIDCOL 属性の列「IDFILE」を追加、16から21行目でFILESTREAMを)

 

Code Snippet
  1. CREATE TABLE [dbo].[TMDbBackDrop](
  2.     [ID] [int] IDENTITY(1,1) NOT NULL,
  3.     [IDFILE] [uniqueidentifier] ROWGUIDCOL  NOT NULL,
  4.     [TMDbID] [int] NULL,
  5.     [aspect_ratio] [numeric](4, 2) NULL,
  6.     [file_path] [nvarchar](256) NULL,
  7.     [height] [int] NULL,
  8.     [width] [int] NULL,
  9.     [iso_639_1] [nvarchar](50) NULL,
  10.     [vote_average] [numeric](18, 14) NULL,
  11.     [vote_count] [int] NULL,
  12.     [Image] [varbinary](max) FILESTREAM  NULL,
  13. CONSTRAINT [PK_TMDbBackDrop] PRIMARY KEY CLUSTERED
  14. (
  15.     [ID] ASC
  16. )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] FILESTREAM_ON [FSMOVIE],
  17. UNIQUE NONCLUSTERED
  18. (
  19.     [IDFILE] ASC
  20. )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
  21. ) ON [PRIMARY] FILESTREAM_ON [FSMOVIE]

01

コメント

このブログの人気の投稿

ダブルクォーテーションで括られたCSVカ​ンマ区切りテキストファイルを SQL Server で Bulk Insert する方法

PowerShellでTSV/CSVの列を絞り込んで抽出し、(先頭/行末)からN行出力する

IKEAの鏡を壁に取り付ける