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
- CREATE TABLE [dbo].[TMDbBackDrop](
- [ID] [int] IDENTITY(1,1) NOT NULL,
- [IDFILE] [uniqueidentifier] ROWGUIDCOL NOT NULL,
- [TMDbID] [int] NULL,
- [aspect_ratio] [numeric](4, 2) NULL,
- [file_path] [nvarchar](256) NULL,
- [height] [int] NULL,
- [width] [int] NULL,
- [iso_639_1] [nvarchar](50) NULL,
- [vote_average] [numeric](18, 14) NULL,
- [vote_count] [int] NULL,
- [Image] [varbinary](max) FILESTREAM NULL,
- CONSTRAINT [PK_TMDbBackDrop] PRIMARY KEY CLUSTERED
- (
- [ID] ASC
- )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] FILESTREAM_ON [FSMOVIE],
- UNIQUE NONCLUSTERED
- (
- [IDFILE] ASC
- )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
- ) ON [PRIMARY] FILESTREAM_ON [FSMOVIE]
コメント
コメントを投稿