2025年9月27日土曜日

RDBMSが持つべき12のルール

E・F・コッドが提唱したもの 以下のルールの機能だけで、データベースの管理ができなければ ならない。

1.情報に関する原則


表の名前等も含む、すべての情報をカタログ(DBの表等)で記録する。

2.アクセスの保証


すべての情報は、表の名前、主キーの値、ドメインの名前でアクセス可能であること (アドレス指定などは、論理的になし)。

3.NULLの扱い


NULLが統一的な方法として取り扱えること。

4.オンラインカタログ


データと同じ表現方法、アクセス方法で、オンラインカタログを利用可能とする。

5.オンライン言語


データの定義、ビューの定義、トランザクション制御等を、単一の言語で実現できる。

6.ビューの更新


ビューを通しての更新が可能な場合は、RDBMSが実際の更新を、実表に対して行う。

7.高水準言語


高水準言語は、挿入、更新、削除において、一時に複数のタプルを処理できること。

8.物理的なデータの独立性


物理的なアクセス方法の変更等が、アプリケーションプログラムに影響を与えない。

9.論理的なデータの独立性


データ構造など論理的な変更が、アプリケーションプログラムに与える影響を最小化する。

10.整合性の独立


製造性のための制約条件が変更されても、アプリケーションプログラムへの影響を最小化する。

11.分散


位置などの分散に対して、アプリケーションは意識しない。

12.データ破壊からの独立


プログラムが制約を破壊しては、ならない。







2025年8月29日金曜日

クロニクル CentOSにMySQLを入れる

 1. MySQL Yumリポジトリの追加


https://dev.mysql.com/downloads/repo/yum/


から、対応するOSのrpm名を取得。


mysql84-community-release-el9-2.noarch.rpm


でした。


以下のコマンドで追加


sudo dnf install -y https://dev.mysql.com/get/mysql84-community-release-el9-2.noarch.rpm



2. インストール


sudo dnf install -y mysql-community-server



3.サービスの起動と有効化


sudo systemctl start mysqld

sudo systemctl enable mysqld



4. rootの初期パスワードを探す


grep 'temporary password' /var/log/mysqld.log



5.セキュリティ設定


sudo mysql_secure_installation


を実行。パスワードを聞かれるので、「4.」で探したものを利用。


新しいパスワードをつける


あとは、対話に沿って進める。



6. 接続


mysql -u root -p 


で、「5.」でつけたパスワードでログイン




2025年8月16日土曜日

オブジェクト指向におけるオブジェクト間の関係

 ・オブジェクト間の関係をリレーションと呼ぶ。

・リレーションには、次の種類が存在する。


1.is-a


   ・Aは、Bである、という関係

   ・人間は、動物である が例

   ・継承関係のこと


2.has-a


   ・Aは、Bを持っている、AはBから構成される、という関係

   ・車には、ハンドルがある が例

   ・集約(アグリげーション)、複合集約(コンポジション)となる






SQL vs NoSQL vs NewSQL - A comparative Study

 公開されている

SQL vs NoSQL vs NewSQL - A comparative Study

のキモの部分を読んで勉強してみたいと思います。


概要

RDBMSでは、データは表、あるいは、リレーションという形で保存される。

しかし、非構造データが主役となるビックデータには、RDBMSでは不十分。

ビックデータに対して高速な処理や、スケーラビリティの確保が

難しい。

そこで、ビックデータのためのスケーラブルで非構造化データに

対応したプラットフォームとして、NoSQLと呼ばれるシステムが登場した。

NoSQLには、key-valueペア、ドキュメント、グラフ、ワイドカラムがあり、

いずれもスキーマを必要としない。

NoSQLには、ACIDプロパティを保証品という欠点があり、RDBMSとの

互換性に問題があった。そこで、NewSQLが登場した。

NewSQLは、RDBMSにNoSQLの拡張性を加えたもの。


NoSQL

Data Model in NoSQL

NoSQLのデータモデルには、key-orientedストレージ、

グラフモデルなどがある。


Key based NoSQL Data Model

keyを利用してデータの保管やアクセスを行う。

key based modelの最も単純な形式は、key-valueストア。

keyに対応した任意のデータを持つことができる。

データに関する情報は、データベースでは管理されない。

Amazon DynamoDBなどがある。

別のタイプのekyモデルとして、ドキュメントモデルがある。

keyは、ドキュメントと呼ばれる楮かされたデータに対応する。

ドキュメントは、JSONなどのフォーマットで保管される。

この例としては、MongoDBなどがある。


-- つづきます。--



2025年8月14日木曜日

クロニクル MacでMySQL

MacにMySQLをインストールします。


1. インストーラのダウンロード


から、OSに対応するバージョンのインストーラーを入手しました。


2.ダウンロードしたファイルを実行して、インストーラーの指示通りにインストール。


3.Macの「MySQL」の項目ができていて、起動/停止ができるようになってました。


4.PATHを通す。
 
 ターミナルから扱えるように、
 
/usr/local/mysql/bin

へ、PATHを通りました。


5. ターミナルからログイン

mysql -u root -p

で、パスワードを入力すると、ログインできました。




2025年8月10日日曜日

クロニクル MacでTiDB

 tiup playgroundを利用してみたいと思います。


Mac OS 13.7.6です。


1.インストール


こちらのマニュアル通りで、動きました。


https://docs.pingcap.com/ja/tidb/stable/tiup-overview/


インストール後の指示で、Bashのプロファイル(.bash_profile)を再実行しました。


2.tiup playgrondの実行


コマンドラインで、


tiup playgrond


を実行。


ダウンロードされ、クラスタが作られるようです。


3.接続の確認


別のターミナルで、


tiup client


を実行。


プロンプトが上がってくるので、


my:root@127.0.0.1:4000=> show databases ;

      Database      

--------------------

 INFORMATION_SCHEMA 

 METRICS_SCHEMA 

 PERFORMANCE_SCHEMA 

 mysql 

 sys 

 test 

(6 rows)

my:root@127.0.0.1:4000=>


動いているのかと思います。




2025年8月9日土曜日

クロニクル CentOSにOracleクライアントを入れる

 CentOS 9 です。Oracle11.2 clientをインストールします。


1. Oracleクライアントのダウンロード


https://www.oracle.com/jp/database/technologies/instant-client/linux-x86-64-downloads.html


から、接続するデータベースのバージョンにあったクライアントをダウンロードしました。


SQL*PLUS も加えて、次の2つを入手しました。


oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm


oracle-instantclient11.2-sqlplus-11.2.0.4.0-1.x86_64.rpm


2.依存関係のあるライブラリのインストール


sudo dnf install -y libaio libnsl


3.Oracleクライアントのインストール


sudo rpm -ivh  ./oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm


sudo  rpm -ivh ./oracle-instantclient11.2-sqlplus-11.2.0.4.0-1.x86_64.rpm


以下のディレクトリにインストールされているみたいです。


/usr/lib/oracle/11.2/client64



4. 環境変数の設定


〇ライブラリへのPATHの追加

LD_LIBRARY_PATH="/usr/lib/oracle/11.2/client64/lib"


〇日本語環境への設定

NLS_LANG=JAPANESE_JAPAN.UTF8


〇PATHの追加

/usr/lib/oracle/11.2/client64/bin


を追加する。


反映して、


sqlplus 


を実行すると、sqlplus が起動する。



5.接続の設定


$HOMEに、次のようなtnsnames.oraファイルを準備する。


+----- tnsnames.ora


〇〇 =

  (DESCRIPTION =

    (ADDRESS = (PROTOCOL = TCP)(HOST = ××)(PORT = ××))

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = 〇〇)

    )

  )


+----- 


環境変数 TNS_ADMIN に、tnsnames.oraファイルのあるディレクトリを指定する。


次のようなsqlplusのコマンドで接続してみる。


sqlplus ユーザ/パスワード@〇〇


接続できました。