やってみる

アウトプットすべく己を導くためのブログ。その試行錯誤すらたれ流す。

はてなブログDBを作る

SQLite3で。

成果物

GitHubHatena.Blog.API.Database.Create.Blogs.201703011124

開発環境

はてなブログAtomPub - Hatena Developer Center

前回まで

http://ytyaru.hatenablog.com/entry/2017/06/26
http://ytyaru.hatenablog.com/entry/2017/06/29

データベース

SQLite3で管理する。以下のファイルとして作成する。

  • Hatena.Blogs.sqlite3

テーブル

Blogs

create table Blogs(
    Id              integer primary key,
    AccountId       text not null,
    BlogId          text unique not null,
    HatenaBlogId    text unique not null,
    Title           text,
    Description     text,
    Created         text
);
  • BlogIdはURLのドメイン名。はてなブログAPIではそれをブログIDという
  • HatenaBlogIdはAPIで取得した結果ののこと。はてな上で管理しているブログの識別子と思われる
  • AccountIdは外部キー制約したいが相手が別ファイルのテーブルなので指定できない

悩んだこと

いっそHatena.Accounts.sqlite3に含めてしまおうかと悩んだが、公開/非公開データを区別したいため分離した。

  • AccountsDBファイルに含めてしまうと公開/非公開の区別がしづらくなる
  • EntriesDBファイルに含めてしまうとファイルサイズの問題で扱いづらくなる

別DBに分けせいて手続きが面倒になるのが微妙。

外部キー制約

別DBにするせいで外部キー制約できないのが不満。整合性が取れなくなる可能性がある。SQLite3を使うかぎり諦めるしかない。

だからといって本格的なRDBMSを使うのは大げさ。SQLite3を使い、別DBにするのが最善か。

レコード数が少ない

Hatena.Blogs.{HatenaId}.sqlite3としないのは1無料アカウントだと3ブログまでしか作れないから。わざわざ3レコードのためにDBファイルを作成したくない。はてなサービスの仕様では1ユーザ(IP?)あたり4つのサブアカウントを作れる。5無料アカウントで15ブログ。5有料アカウントで50ブログ。つまり、最大50レコードにしかならない。

所感

気になる点はあるが、「こうする」と決めないと進まない。後での修正が大変だとわかっていても、進めてみなければわからないことも多い。やってみるしかない。