アプリ版:「スタンプのみでお礼する」機能のリリースについて

会社でXAMPPを用いてWEBベースのプログラミングを独自で構築して利用しています。

このプログラム自体は、エクセルでいうところの『ピボットテーブル』的な利用方法で動かすだけのものです。
表示レイアウトの関係上、ピボットテーブルをそのまま使用できず、以前はVBAマクロを用いて1行ごとに配列の並べ替えを行っていました。データ量が2万件前後あるため、この方法でやっていたときには、処理完了までに半日かかっていました。

この状態を改善するためにMySQL(MariaDB)で処理すると、データ登録から雛形への書き込みまで行っても5分以内で完結できるようになりました。


ところが先日、プログラム実行時に複数のレコードがいくつか重複してしまう事案が発生しました。
不具合発生後、何回か同様の処理を行っても再現性に乏しく、毎回必ず発生する訳ではありませんでした。

この現象が多発しないよう対処するため、データベース自体を見直そうと思っています。
そんな時、世の中にはたくさんのデータベースが存在しており、正直どれを選んでいいのかわかりません。

現在取り扱っているデータ自体の重要性はさほど無いのですが、今後社内のDX化を推進していく中で、多少費用が発生しても「高速かつ正確な処理」を行うことができるデータベースは何か、ご紹介頂けますでしょうか。

もしかしたら、XAMPPのカスタム設定をほとんど行っていないので、何かしらの制約がかかってしまっていて、誤動作の原因を作っているだけなのかもしれません。

現在のように、社内だけでの運用であればこのままでも良いかもしれないのですが、今後社内システムのクラウド化も考えているため、より信頼性の高いものを検討しています。

お忙しい中、誠に恐縮いたしますが、よろしくお願いいたします。

質問者からの補足コメント

  • うーん・・・

    プログラム自体はPHPで動作しているのですが、今回のような不具合は稀にしか発生しておらず、不具合発生時のクエリ条件の再現性も見られなかったため、データベース側を疑っています。

    No.1の回答に寄せられた補足コメントです。 補足日時:2022/11/22 19:05

A 回答 (4件)

RDBMSの不具合を疑う前に、やるべきことが山のようにありすぎて。


行の重複禁止をRDBMS側で制約してもらいたいなら、ユニークインデックスを定義する必要があります。
処理途中などは、RDBMSはまったく関知しないことです。タイミングや再現性も利用者側の勝手な思い込みであり、RDBMSに対しては何ら制約を定義できてないのだから、すべて利用者責任です。
トランザクションを使ってたとしても、途中で重複が発生というのは利用者側の勝手な思い込みであり、それに対してRDBMS側では関知する機能はなく、もしそういったことをRDBMS側に関わって欲しいなら、そういった仕組みを利用者側で組み込む必要があります。
つまり、RDBMSに対しては一切の制約の定義がなく、利用者側の勝手な思い込みのシステムの矛盾ということです。
これらは、商用RDBMSで高いシェアを持つOracleやSQL Serverを導入しても何ら解決できることではありません。高額なサポート費用を出していても、原因の特定ができていないなら、調査さえしてもらえない可能性が高いです。「調査依頼する前にやるべきことがある」ということです。
RDBMSは世界的なシェアでは欧米が圧倒していますが、日本では国産RDBMSが一定のシェアを持っています。富士通、日立、NECが国産RDBMSの主要メーカーです。
標準SQLに準拠しているし、機能や品質でも欧米メーカーに劣りません。
欧米メーカーの製品は、不具合の報告の翻訳、有無の確認、修正版の提供などすべて本国経由などで行われるので、時間も費用もかかります。大手メーカーも含めて買収などで、将来的な約束が消えることもあります。
その点では、国産RDBMSは、そういった危惧がありません。
高額なサポート費用を出していなくて、ユーザーミスの可能性が極めて高くても支援してもらえたという事例がいくつもあります。
    • good
    • 0
この回答へのお礼

お返事いただきありがとうございます。

私自身の書き方にも問題があったと思います。
教えて頂いたことの殆どが理解できていない『超素人』なのですが、商用ベースであればOracleかSQLサーバーを選べば大丈夫なのかなと思いました。

質問のはじめに「現状発生している不具合」を記入してしまったことが誤解を招いてしまったのですが、今後システム開発を行う際に求められる信頼性を含めたRDBMSはどんなものがあるのかを知りたかったのが1番でした。

実際には、今後のシステム開発は自社では行わずに外部委託になると思います。(質問時の不具合部分は、社内で完結するものなので、さほど不具合の影響を受けない事もあって外注しない予定でいます。)

お忙しい中、ありがとうございました。

お礼日時:2022/11/28 09:23

ユーザーデータで重複禁止の定義がされていないなら、RDBMSは関知しようがないという説明をしました。


ユーザーデータの特性と、SQLの指定で、明らかにこの検索の部分では重複データが生じるはずがないと思うことはあり得ます。
しかし、その情報だけでは調査のしようがないのです。
「こういうデータが得られるはずの後のこの操作の部分で」といった特定が必要になります。
    • good
    • 0

重複データが発生しないはずが発生するという結果が残る状況で、その原因が「MySQLのこの部分の処理に不具合があるはず」という所まで特定できないのはスキル不足です。


それは、商用RDBMSを使った場合でも同じです。

MySQLではGROUP BYの指定で、「標準SQLや他のRDBMSではエラーになる指定だけど、エラーにしない」という拡張仕様があります。
これは初心者にはかなり不親切で、「エラーにしないけど、適用条件を満たしてなければ結果は保証しない」というものです。
https://dev.mysql.com/doc/refman/8.0/ja/group-by …

my.iniのsql-modeで、
ONLY_FULL_GROUP_BY
を指定すると、拡張仕様が無効になります。結果の保証もないのに、拡張仕様で動いてものはないでしょうか?

XAMPPの利用経験しかないのに、将来的にはクラウド化など社内開発で、多くのことができるかのように考えるのも非現実的です。
「多少費用が発生しても」というのも、どこまで考慮してのことか分かりません。

商用RDBMSとしては、OracleやSQL Serverがシェアが高いです。
XAMPPのように、入れたらすぐに使えるような物ではありません。
使いこなすというか、基本的な機能を使うにもかなりの専門知識が必要です。
購入は数万円ですが、それを活用したシステム構築は素人同然の人には、かなり敷居が高いです。
自社開発でシステムを構築するのは、容易ではありません。
そのため、ソフトウェア会社に発注してシステム開発してもらったりします。
開発にサポート契約を含め、初期費用は少なくとも数百万円、月に数十万円〜数百万は必要です。

MySQLやPostgreSQLなど、基本的な使い方では無料で利用できるRDBMSのサポート(質問やトラブル対応、不具合と確定した場合の対策)を有償で請け負う会社もあります。

いずれにしても、RDBMSの不具合を疑うなら、「この処理に明らかな問題がある」といった特定をできるスキルが必要です。
    • good
    • 2

不具合の発生が、MySQL(MariaDB)に原因があると判断しているのですか?


多くの場合、不具合はアプリなど利用者側にあります。
この回答への補足あり
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す