R, Python, DB 備忘録

データベースとか、jupyter(Python)、Rとか色々

無料の列指向DB「MonetDB」

MonetDB logo

  • MonetDB(https://www.monetdb.org/)はWindows環境でフリーで使える(おそらく)唯一の列指向DB(Columnar Database)
  • DockerでMariaDB ColumnStoreやPostgreSQl+CFWも試したがMonetDBのがスピード優位
  • マイナーな印象あるが、Tableauにも対応
  • なお、ODBC接続するときの初期管理者ID、PWは両方とも「monetdb」

デメリット

  • 2020年6月現時点でUTF-8のみ対応
    • bulk load用のファイルはWSLでiconv -f cp932 -t utf8
  • CR+LF → LF変換(CR+LFを圧縮したCSVファイルの場合だと時々失敗する)
    • dos2unixコマンドを使用
dos2unix <*** 入出力ファイル名 ***>  ※ファイルを直接書き換える
    • インストールが必要
sudo apt install dos2unix
  • Group by 1,2... といった書き方ができない
    カラム名を明示的に記載する必要あり

留意点

Join

  • Using句を用いて結合した場合、結合キーはテーブル名を付けずに使わなければならない。
    • <ダメな例>
    Select
      dt1.key   <--- dt1. を付けると動かない。逆にOn句を用いて結合したときはテーブル名必要
      ,dt1.value
      ,dt2.value2
    From dt1
      Inner join dt2 Using(key)
    • <よい例>
    Select
      key
      ,dt1.value
      ,dt2.value2
    From dt1
      Inner join dt2 Using(key)
  • Using句を用いない場合(Using句とOn句が混じる場合を含む)は、3つ以上のJoinは不可 2個ずつJoinしていく。
  • Using句を用いた場合、結合キーはJoinされた側のカラムからは消えてしまうので、dt1.key として使えない(dt1.*としても含まれない。)。dt2.key を明示的に指定する必要あり。

www.monetdb.org