2025年8月(もう3ヶ月も前)に、MariaDB 12.0がリリースされました。

STS(正式にはRolling Releaseという)ですが、ついに12系ということで、

ちょっと変更点を見てみたいと思います。

(mariadb 12.0)

https://mariadb.com/docs/release-notes/community-server/release-notes-mariadb-12.0-rolling-releases/what-is-mariadb-120


確か、12.0でmysqlコマンドは完全になくなり、mariadbコマンドになるかなと。

confの設定も、mysqlセクションじゃなくて、mariadbセクションになるのかしら?

ここは見てないのですが、タレの焼き直しが必要そうな匂いですね。

oracleモード関連での強化もなされているようですね。

とはいえ、オプティマイザヒントが入ったり、次のバージョンでcaching_sha2_passwordが入ったりと、

MySQL本家とは離れているようで、機能は似せるようにしている印象です。

個人的には、

explain format=tree ...

が入ってほしいな〜とは期待しています。

また、自分の作っているmagentadeskも0.8.1で、12.0対応済みです。

(magentadesk)

https://github.com/shigenobu/magentadesk/releases

最近思うことですが、DBも進化もさることながら、アプリケーションおよび、インフラとかも進化がすごくて、追うのが辛い。。

生成AIは確かにすごいが、アルゴリズムを考えるのがヒトでなくなったとき、ほんとにやばいなーという気がしています。

自分もJetbrainsのAIアシスタントとか使ってますが、書く力がなくなってきているのではないか?と自問自答しています。

とはいえ、JSとかCSSとかについては、知らないことが多いので、AIアシスタントで逆に教えてもらっている側面もあると思うと、なかなか難しいなーとは思いつつ。。

自問自答することが無くなったら、それこそ終わりな気もするので、注意していきたいかなとは思ってます。

以上

投稿日時:2025年10月26日 00:05   カテゴリー:mariadb  

ebonyrack 0.9.2 をリリースしました。

https://github.com/shigenobu/ebonyrack/releases

0.8.5からの主な変更点は以下となります。

(0.8.6)

・マウスドラッグで、ワークスペースを動かせるようにしました。

HTMLの場合と動作を合わせています。

(0.9.0)

・java21に上げました。

・HTML出力時のembed fontをwoff2に変更しました。

・HTML出力時の画像ファイルをPNGからWEBPに変更しました。

(0.9.1)

・テーブルコピー時に、ユニークキー、キー、外部キー、制約をコピーしないようにしました。

※外部キーは元々コピーしてませんでしたが。。

・予約語を見直しました。その結果、oracle mode時の予約語は削除しました。

(0.9.2)

・フォントをMPlus1からmiguに変更しました。

大きな変更はなく、細かな使い勝手の変更です。

fontに関しては、MPlusがとてもきれいで気に入っていたのですが、

全角記号などの外字が表示できないなどがあり、miguフォントに変更しました。

miguフォントはJIS第4水準までカバーしているということなので、

大きな見栄えの変更なく移行できたかなという感じがします。

https://itouhiro.github.io/mixfont-mplus-ipa/migu

HTMLの出力画像ですが、これまでPNGだったのですが、どうしてもサイズが大きくなっていたので、

これをWEBPに変換しました。

・PNGからWEBPの変換

・ttfからwoff2への変換

の2つで、6.3MBのHTMLファイルを、3.5MBまで減らすことができました。

VIEWとか入れようと思っていたのですが、どうしようかなと最近は思い直しています。

NOTEに「コメントとして扱わない」みたいなフラグでも設けて対応するのが安いのかなーとか考えてますが、ちょっと先送りになりそうです。

1機能を足すのに、やるべきことがたくさん発生してしまい、作りがよくないのかなーと思いつつ。。

テスト機能についても、生成AIとか使うほうが簡単じゃない?とか思うようになり、あんまりいらないのかなと。。

というわけで、大きな機能追加はしばらくなさげな感触です。

以上

投稿日時:2025年10月25日 23:44   カテゴリー:java, mariadb  

今月はがんばりました。

0.8.5をリリースしました。

https://github.com/shigenobu/ebonyrack/releases

MariaDBと謳っていますが、MySQLも可能なので、フリーのER図作成ツールとして、

少しでも、世の中で使ってもらいたいなと感じる出来になってきたかなと思っています。

とはいえ、マニュアルも古いので書き換えないとですね。。

0.8.1〜0.8.5の変更内容は以下のとおりです。

なお、0.8.5で、ローカルのSQLITEの一部の型を変更したので、

旧バージョンでJSONをWRITEしてから、新バージョンでJSONをREADしてもらえればと思います。


検索ボックスを画面の左下に出すようにしました。

enterで次へ、shift+enterで前へ、なども対応しています。

フォーカスの遷移は、単語ごとではなく、オブジェクトごとになってます。

合わせてサイドのスライダーも連動するようになってます。

個人的には結構いい感じかなと満足の出来です。

ALTER TABLEによる外部キーのIMPORTに対応し、

さらにCREATE TABLEに含まれる外部キーのIMPORTにも対応しました。

かなり厄介でした。。

ebonyrackの仕様として、外部キー同士の型が一致していないとダメとしているのですが、

それはIMPORTにも適用させていただきました。

タイトルの通り、一括で位置と色を調整できるようしました。

例によって、エクセルからの貼り付け対応ですね。(正確にはタブ区切り)

上記以外にも、

フォーカスがあたっているオブジェクトにenter押下で編集画面を上げるようにしたり、

ちょこちょこ使い勝手の修正をいれてます。

そして、やるやる言ってた外部キーと検索ができたので、

改めて次の課題を備忘録的に書いておきます。

  • VIEW/FUNCTION/TRIGGER/PROCEDURE
  • テストデータ生成
  • IMPORT時の自動配置調整
  • パフォーマンス調整

JAVA21用にも書き換えないとですね。

1.0.0も近づいてきたので(特に意味はないですが)、頑張ろうかと思います。

以上

投稿日時:2025年06月27日 22:53   カテゴリー:java, mariadb  

MariaDB 11.8 が今月GAリリースされました。

https://mariadb.com/docs/release-notes/mariadb-community-server-release-notes/mariadb-11-8-series/what-is-mariadb-118

今回はLTSなので、2028年6月までの長期サポートとなります。

公式を見ていただければわかりますが、流行りのVECTOR型とか色々入ってます。

基本的には、STSである11.5〜11.7の変更がそのまま取り入れられている感じですね。

いろいろ、見返してみると、MariaDBは10.0の時代から、

DELETE〜RETURNING

があったんですね。。初めて知りました。

https://mariadb.com/docs/server/reference/sql-statements/data-manipulation/changing-deleting-data/delete

RETURNINGは、

  • INSERT RETURNING
  • REPLACE RETURNING
  • DELETE RETURNING

ってことで、3つあるようです。

REPLACEはちょっと色々あるのであんまり使わないですが、

DELETE RETURNINGはデータの退避とかにも使えそうですね。


で、自分のつくっているmagentadeskもv0.8.0でMariaDB 11.8に対応しました。

https://github.com/shigenobu/magentadesk

※すいません、VECTOR型は未対応です。。

MySQLも8.4系をサポートしようと思ったのですが、

magentadeskが差分検出時に行うクエリーで以下のようなエラーが出るようになりました。

[ERROR] [MY-010211] [Server] Got error 124 when reading table '/tmp/#sql1_10_5e'

8.0.42などの8.0系ではでないのですが、8.4から急に出るようになりました。

原因は今の所不明です。。

なにかわかったらまたブログに書こうかなと。

とりあえず、今回は以上。

投稿日時:2025年06月27日 22:31   カテゴリー:mariadb  

EOLを迎えて1年立ちましたが、未だにcentos7は使われているはず。

valutがアーカイブレポジトリを提供しており、これを使えばまだしばらくは大丈夫なはず。

(参考)

https://qiita.com/ragi/items/9225f307ea3b38ba1fa6

とはいえ、アリババもレポジトリを提供していたりします。

https://developer.aliyun.com/mirror/centos

上記を参考に、centos7の場合は、

# mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
# wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo

てな感じで、レポジトリを上書きできます。

ただ、baseurl記載の

  • mirrors.aliyuncs.com
  • mirrors.cloud.aliyuncs.com

がアクセスできないことがあるので、この2行は削除しておくといいかもしれません。

あとは、

# yum clean all

してから、色々操作ができるはず。

古いサーバにどうしても追加モジュールを入れる必要があり、

このような方法を取ったことがあったので、記載しておきます。

valutもそうですが、アリババのレポジトリもいつまで生きているかわからないので、

なるべく早くOS移行をしましょう。

以上

投稿日時:2025年06月10日 23:01   カテゴリー:centos  

しばらくぶりの投稿となってしまいました。。

ebonyrack の 0.8.0 をリリースしました。

https://github.com/shigenobu/ebonyrack/releases

0.7.1 – 0.8.0 での主な変更点は以下となります。

なお、0.7.2 でローカルデータベースの変更が入っているので、

旧バージョンでJSONにWriteしてから、新バージョンでJSONをReadしてください。


外部キーの参照される側のカラム(親テーブルのカラムといったほうがいいか)は、

主キーもしくはユニークキーであるようにしました。

もともと外部キーというのはそういうものですが、MySQL系はこの制約が緩く、

要はなんでもOKだったのです。

しかし、MySQL8.4から上記のように参照される側のカラムについて厳格になったので、

それに合わせた修正を行いました。

(※今まで緩すぎたのです。本来はこう有るべきなのです。)

アウトライン(左側の小さい画面)の描画回数が大きく、

CPU使用率が高かったので、500ミリ秒間は再描画しないようにしました。

また、オブジェクトを移動する際、マウスを押してから離す時間が長いと、

(0,0) に移動してしまう不具合があったので、修正しています。

DDLとクラスファイル出力時に、

出力条件(対象テーブルの設定とか、ファイルをどこに出力するか)を一定数保持して、

その条件を再度利用できるようしました。

何度もエクスポートしていると、条件を毎回入力しないといけないので、

この煩わしさのために対応しました。

実際に、プログラムファイルを出力することが多く、

対象テーブルの絞り込みやスキーマなどの出力条件を再利用できる形になって楽になりました。


やるやるいっている、検索の修正、VIEWの対応、外部キーパースなどは全く手を付けていないです。

ebonyrackは実案件でも使っているのですが、VIEWとか、外部キーパースは使わないですよね。。

というわけで、実際に使っているうちに遭遇した不具合とか、不都合の修正を行っていました。

そろそろ、JAVA21にしようかなというフェーズに来ています。

1.0.0 には21にしたいかなと。。

以上

投稿日時:2025年06月10日 22:20   カテゴリー:java, mariadb  

誰も見ていないこのブログを立ち上げ、2024年11月で11年目となります。

丸10年ですね。

約200弱の記事を書いてきましたが、今見直してみると過去のやつは不十分なものもあるなと感じています。

さくらのVPSのCentos7で運用していますが、そろそろリプレイスが必要だな、とも思いつつ。。

この10年振り返ってみると、年々仮想化が強くなり、ITの巨人の肩にのる割合が増えている感じがします。

今後もこの流れは続くのかなとは思いますが、やはり銀の弾丸はないものなので、

特性を把握し、うまく利用していくための学習・情報収集・試行が必要なのかなと思います。

一方で、ビジネスとしては、小さいシステムが淘汰されていくのだろうかと感じつつ、

小さいシステムをちゃんと構築する経験を踏めなくなっていくのは、

今後の人材育成においても懸念に感じています。

確実なことはわからないのが世の常かもしれませんが、

このブログを少しでも長く続けられればいいなと今は思うばかりです。

以上

投稿日時:2024年10月30日 22:47   カテゴリー:other  

0.7.0をリリースしました。

https://github.com/shigenobu/ebonyrack/releases

今月はがんばった。。

0.6.8、0.6.9、0.7.0での対応内容は以下となります。


一定サイクルでやらないとね。

HTMLのsvgにtextを埋め込み、検索可能としました。

FONTを合わせないと、検索のときにずれてしまうので、

FONTもGoogleFontから取得するよう、HTMLも修正しています。

CTR+Fで検索BOXが出現するようになりました。

workspace上で見えているテキストに対して検索し、

見つかった場合は、ワードをハイライトするとともに、

ワードを含んでいないオブジェクトを目立たないようにしました。

とはいえ、改善の余地がある感じではあります。

これまではサイドのオブジェクト名をクリックすると、

ワークスペースの該当オブジェクトに移動し、フォーカスさせていました。

これを、クリックまたは十字キー選択では、該当オブジェクトに移動するにとどめ、

ダブルクリックまたはENTERキーで、フォーカスさせるようにしました。

これは検索時にサイドのオブジェクト名を目立たせないようにしたため、

クリックでフォーカスを当てると操作性が悪くなるためです。

また、ワークスペース上でフォーカスを持っているオブジェクトに対して、

サイドが連動して選択状態になるようにしています。


今回の検索機能で、指定のオブジェクトのみを目立たせることは不要になったので、

予定を修正して、以下のプランで今後を進めようかと思います。

  • ANTLRによる外部キーパース
  • VIEWの対応
  • 検索の改善(小さな表示スペースで、前・次で飛べるようなイメージ)
  • テストデータ作成

テストデータ用のINSERT文作成というのが正確ですが、開発中にあると便利だなと思いました。

他のツールでもあったりするようなので、優先度上げてやってみようかなと思ってたりします。

以上

投稿日時:2024年10月30日 22:19   カテゴリー:mariadb  

mysqlで連番を生成しようとすると以外と難しいです。

再起CTEなんかでやらないといけないかなと。

mariadbではsequence storage engineの機能を使うと、とてもかんたんです。

https://mariadb.com/kb/en/sequence-storage-engine

に書いてあるとおりです。

↓の感じですね。

> select * from seq_1_to_10;
+-----+
| seq |
+-----+
|   1 |
|   2 |
|   3 |
|   4 |
|   5 |
|   6 |
|   7 |
|   8 |
|   9 |
|  10 |
+-----+

なんで連番を生成したいかというと、歯抜けが許されない場合があるからですね。

たとえば、↓のような状況だったとします。

> CREATE TABLE `active` (
  `ymd` date NOT NULL,
  `cnt` int(11) NOT NULL,
  PRIMARY KEY (`ymd`)
);

> select * from active;
+------------+-----+
| ymd        | cnt |
+------------+-----+
| 2024-10-01 |  10 |
| 2024-10-02 |   7 |
| 2024-10-04 |  11 |
+------------+-----+

見てのとおり、「2024-10-03」のデータがありません。

ここで連番テーブルとLEFT JOINすることで、

「2024-10-03」を「0」として計上できます。

↓の感じですね。

> with
t as 
(
  select date('2024-10-01') + interval seq day as ymd from seq_0_to_3
)
select
  t.ymd as ymd,
  coalesce(active.cnt, 0) as cnt
from
  t
  left outer join
  active
  on t.ymd = active.ymd
order by
  t.ymd
;
+------------+------+
| ymd        | cnt  |
+------------+------+
| 2024-10-01 |   10 |
| 2024-10-02 |    7 |
| 2024-10-03 |    0 |
| 2024-10-04 |   11 |
+------------+------+

まあ、今更ですが、意外と連番生成は求められるので、

mariadbであるなら、sequence storage engineをつかうと楽ですよ、ってことですかね。

以上

投稿日時:2024年10月19日 00:02   カテゴリー:mariadb  

0.6.7をリリースしました。

https://github.com/shigenobu/ebonyrack/releases

0.6.5、0.6.6、0.6.7での対応内容は以下となります。


これは、「use 〇〇;」をDDLファイルの先頭に入れるためです。

オブジェクト(テーブル、シーケンス、ノート)は、今までも右クリックでコピー&ペイストができたのですが、

CTR+CとCTR+Vの操作に対応しました。

CTR+Vでは、最も新しいコピー元を貼り付けます。

テーブル内のカラム一覧に、挿入貼り付けを対応しました。

これは大量のカラムを登録したいときに、エクセルなどで予め準備しておくことで、

一気に挿入可能となるものです。

「Column name」のセルの背景が薄い赤になっているので、

ここに対してCTR+Vで挿入貼り付けとなります。

また、DELキーで複数行の削除が可能となります。

「Edit」のメニューに追加しています。

テーブルやシーケンスの情報を一括更新可能です。

テーブルでは、カラムグループとパーティションも編集可能です。

薄紫のセルに対して、CTR+Vをすることで、上書き貼り付けが可能です。

エクセルで変換情報を用意しておき、貼り付けるとよいかなと思います。

また、パーティションを一気に付与するなどができるようになっています。

(パーティションってあとでやる場合も多いので)

今まではオブジェクト1つずつしか移動できませんでしたが、

SHIFT+左クリックで対象を複数選択し、移動することができるようになりました。

オブジェクトの重なり合いが少し微妙な部分はありますが、操作性の向上は図れています。


JTableのセル操作の向上が難しく、エクセルとの併用のほうが良いかと思い、

貼り付けなどを対応している感じになってます。

今後ですが、

  • 特定の名称パターンのオブジェクトのみを表示する(例えば「shop」が含まれているテーブルだけ表示するなど)
  • VIEWの対応

あたりを優先的に考えてます。

その他としては、

  • 外部キーのDDLを読めるようにする(ANTLRのパースで、自前で生成したものくらいは読めるようしたいかな)
  • FUNCTION/TRIGGER/PROCEDUREの追加
  • 検索機能
  • データ作成機能

あたりを考えています。

以上

投稿日時:2024年10月18日 23:40   カテゴリー:java, mariadb