データベースの作成@1
一人アドベントカレンダー3日目。とりあえず3日は頑張ったw
前書きに書くネタが速攻ついえたんだけど?w
本日のメインテーマは「データベースの作成」です。
CSVというDBとのやり取りに使う形式
自分でデスクトップアプリケーションを作るぞ、というと簡易なデータベースとしてCSV(Comma-Separated Values)で組んだりすることがある。
これは形式としては単なるテキストファイルなのでテキストエディタでファイル開いて読み込めます。
名前の通りカンマで区切って列の分離をするよ、という概念です。
このcsvという形式自体は簡易なDBとして現在も使われてます。
検索クエリー結果の出力結果を他システムに連携するときとか。
ホストAにあるDBMS内のデータベースA`の検索結果を別シスシステムのホストBにあるDBMS内のデータベースB`にコピーしたい、ってなった時に中継になるホストCがホストAとホストBに同時に接続して、A`から取り出したデータをB`に1行ずつアップデートする、なんてことも可能っちゃ可能ではある。
ただ、それをやっている間B`のデータは更新作業をしているためにデータの読出しに注意しないといけない(古いデータを誤って読み出す可能性がある)。
しかもやってる最中のネットワークが切れたりするとやり直しになる(最近はそんな事態はあまり発生しないが、90年代とかでは割とよくある話だった)。
そんなんやるくらいならホストAでデータベースA`から検索結果をCSVで吐き出して、テキストファイルとして移送して、ホストBでテキストファイルからデータベースB`に取り込んだほうがB`側の処理が早いとかダウンタイムが全体的に少ないとか安定するとかあったねん...。
その流れで今でもCSVデータを簡易のDBとしてデータ移送に使うことがちょいちょいあるねん。
プログラミング言語の中での高級言語(Cとかjavaとかpythonとか)ならテキストファイルを1行ずつ読み込むとかカンマでスプリット(区切り)するとか関数あるやろ。
(純粋なレトロCにはないけど手で書ける範疇だろう?吹越は大学時代書いたぞ...)
まぁCSVの基本の区切り文字は名前の通りカンマなんだけど、別の文字を区切り文字にすることが出来たりする。
例えば金融系だと更新データの一部に金額データがあって、金額表示に使う3桁ごとのカンマが区切り文字と扱われると困る、ってパターンとかね・・・
最近金融庁から激おこされたみずほがMINORI作ってるころ「サクラダファミリア」とか呼ばれてたけど、その整備から退場した人の愚痴の中に「区切り文字が混在してるのが苦痛」みたいな愚痴を見た記憶があるぞい...
今みずほのERPデータ入力CSVフォーマットを確認したけど、正直区切りがカンマなだけで安心したわ...
http://b-web.faq.mizuhobank.co.jp/faq/show/2437?site_domain=default
データの丸ごと移動をしたいときにCSVを使うことがあるって話は上でしたわけですが、データの検索とかのデータベースとしてCSVをテキストエディタで開いて使うのは正直道具の使い方を間違えてるとしか言えんです。
しかもテキストファイルベースなので複数の表をまたぐ検索ができない。表の結合もできない。
それならExcelファイルで開くほうがまだましなんですが・・・それはそれでSQL検索しようとするとクッソ大変だとか複数テーブルがそのまま複数シートになるだけでめんどいとかあるので、もうちょっとDBMSとして使えるようにとがんばるのが次章
MSAccess
MSOfficeの一種。MSSQLServerよりは簡易でデータベースファイルとして出力することでファイル丸ごとコピーでデータベースの移行ができるという利点が。
あとGUIがつかえる。@ITだと吹越よりHorus様のほうが詳しいと思う。吹越自身は好んでAccessを使うことは無いし...(このくらいで済むサイズだとExcelで終わらせちゃうんだもん)
SQLite
SQL文を使ってCLIでデータベースを作ってみたい、って人はまずこれがおすすめ。
なんでかって?ほかのDBMSはDBサーバとしての側面があって、インストールと接続とっていうサーバ構築としての作業が存在するから。
そいつらの話題は明日に回します。
使い方についても「SQLite 使い方」とかでググってください。
まぁコマンドプロンプトから呼び出して使えるし、フリーソフトだし簡単なアプリに組み込んで使うとかしたいならおすすめですねー。ダンプファイルだけで直接読み書きするねん。
AndroidアプリでDB使うなら基本的にSQLiteですし。iPhoneアプリ?知らね。
個人的な話ですが、大学時代の研究が自然言語処理の意味解析系統だったのですが、日本語ワードネットは利用していてSQLite3版を利用していたなぁ...と懐かしみ。
同義語判定が必要だったのだ・・・
WindowsOS上でファイルとしてデータベースが使えるやり方は概ねこんな感じ。
明日はDBMSを利用しての話をしますが・・・インストールしてどうこうだからそんなに長くならんかな...
直近のイベント(日本文教出版 教科情報メールよりコピペ)
◎連続セミナー2021 ニューノーマル時代に向けた情報技術の潮流
https://www.ipsj.or.jp/event/s
第12回:12月7日(火)10:00-12:00
場所:オンライン開催
主催:一般社団法人情報処理学会
◎データサイエンスへの期待2021
https://univ.osaka-seikei.jp/n
日時:12月8日(水)14:00-17:00
場所:大阪成蹊大学 図書館棟7階ホール(大阪)
主催:大阪成蹊大学
◎2021年度JASLA第2回研究会
https://workshop015.peatix.com
日時:12月11日(土)
場所:上智大学(東京)+オンライン開催
主催:学習分析学会(JASLA)
◎人文科学とコンピュータシンポジウム(じんもんこん2021)
http://jinmoncom.jp/sympo2021/
日時:12月11日(土),12日(日)
場所:オンライン開催
主催:一般社団法人情報処理学会,人文科学とコンピュータ研究会