会社でXAMPPを用いてWEBベースのプログラミングを独自で構築して利用しています。
このプログラム自体は、エクセルでいうところの『ピボットテーブル』的な利用方法で動かすだけのものです。
表示レイアウトの関係上、ピボットテーブルをそのまま使用できず、以前はVBAマクロを用いて1行ごとに配列の並べ替えを行っていました。データ量が2万件前後あるため、この方法でやっていたときには、処理完了までに半日かかっていました。
この状態を改善するためにMySQL(MariaDB)で処理すると、データ登録から雛形への書き込みまで行っても5分以内で完結できるようになりました。
ところが先日、プログラム実行時に複数のレコードがいくつか重複してしまう事案が発生しました。
不具合発生後、何回か同様の処理を行っても再現性に乏しく、毎回必ず発生する訳ではありませんでした。
この現象が多発しないよう対処するため、データベース自体を見直そうと思っています。
そんな時、世の中にはたくさんのデータベースが存在しており、正直どれを選んでいいのかわかりません。
現在取り扱っているデータ自体の重要性はさほど無いのですが、今後社内のDX化を推進していく中で、多少費用が発生しても「高速かつ正確な処理」を行うことができるデータベースは何か、ご紹介頂けますでしょうか。
もしかしたら、XAMPPのカスタム設定をほとんど行っていないので、何かしらの制約がかかってしまっていて、誤動作の原因を作っているだけなのかもしれません。
現在のように、社内だけでの運用であればこのままでも良いかもしれないのですが、今後社内システムのクラウド化も考えているため、より信頼性の高いものを検討しています。
お忙しい中、誠に恐縮いたしますが、よろしくお願いいたします。
No.3ベストアンサー
- 回答日時:
RDBMSの不具合を疑う前に、やるべきことが山のようにありすぎて。
行の重複禁止をRDBMS側で制約してもらいたいなら、ユニークインデックスを定義する必要があります。
処理途中などは、RDBMSはまったく関知しないことです。タイミングや再現性も利用者側の勝手な思い込みであり、RDBMSに対しては何ら制約を定義できてないのだから、すべて利用者責任です。
トランザクションを使ってたとしても、途中で重複が発生というのは利用者側の勝手な思い込みであり、それに対してRDBMS側では関知する機能はなく、もしそういったことをRDBMS側に関わって欲しいなら、そういった仕組みを利用者側で組み込む必要があります。
つまり、RDBMSに対しては一切の制約の定義がなく、利用者側の勝手な思い込みのシステムの矛盾ということです。
これらは、商用RDBMSで高いシェアを持つOracleやSQL Serverを導入しても何ら解決できることではありません。高額なサポート費用を出していても、原因の特定ができていないなら、調査さえしてもらえない可能性が高いです。「調査依頼する前にやるべきことがある」ということです。
RDBMSは世界的なシェアでは欧米が圧倒していますが、日本では国産RDBMSが一定のシェアを持っています。富士通、日立、NECが国産RDBMSの主要メーカーです。
標準SQLに準拠しているし、機能や品質でも欧米メーカーに劣りません。
欧米メーカーの製品は、不具合の報告の翻訳、有無の確認、修正版の提供などすべて本国経由などで行われるので、時間も費用もかかります。大手メーカーも含めて買収などで、将来的な約束が消えることもあります。
その点では、国産RDBMSは、そういった危惧がありません。
高額なサポート費用を出していなくて、ユーザーミスの可能性が極めて高くても支援してもらえたという事例がいくつもあります。
お返事いただきありがとうございます。
私自身の書き方にも問題があったと思います。
教えて頂いたことの殆どが理解できていない『超素人』なのですが、商用ベースであればOracleかSQLサーバーを選べば大丈夫なのかなと思いました。
質問のはじめに「現状発生している不具合」を記入してしまったことが誤解を招いてしまったのですが、今後システム開発を行う際に求められる信頼性を含めたRDBMSはどんなものがあるのかを知りたかったのが1番でした。
実際には、今後のシステム開発は自社では行わずに外部委託になると思います。(質問時の不具合部分は、社内で完結するものなので、さほど不具合の影響を受けない事もあって外注しない予定でいます。)
お忙しい中、ありがとうございました。
No.4
- 回答日時:
ユーザーデータで重複禁止の定義がされていないなら、RDBMSは関知しようがないという説明をしました。
ユーザーデータの特性と、SQLの指定で、明らかにこの検索の部分では重複データが生じるはずがないと思うことはあり得ます。
しかし、その情報だけでは調査のしようがないのです。
「こういうデータが得られるはずの後のこの操作の部分で」といった特定が必要になります。
No.2
- 回答日時:
重複データが発生しないはずが発生するという結果が残る状況で、その原因が「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の不具合を疑うなら、「この処理に明らかな問題がある」といった特定をできるスキルが必要です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) CSVファイルがカンマ区切りにならない。対処法を教えていただきたいです。 仕事でSMS一斉送信ができ 2 2022/07/01 21:24
- その他(プログラミング・Web制作) プログラムの起動、利用について、使用期間を設定する方法 3 2023/08/06 21:03
- デスクトップパソコン 「自動修復でPCを修復できませんでした」と表示されPCが起動しないのですが対処法はありますか? 5 2022/05/13 09:16
- 政治 日本で梅毒が増え続けているのは自民党が性犯罪に甘いからですよね? 7 2022/11/04 11:25
- PHP PHPSpreadsheetによる書き出し時のページネーション方法について 1 2023/03/20 10:35
- HTML・CSS WEBサイトの構築。表示データとWEBデザインを分離する考え方を専門用語・業界用語では何と言うか? 8 2022/09/27 09:16
- その他(家計・生活費) カード会社の銀行登録中の遅延損害金 5 2023/05/27 10:18
- 不動産業・賃貸業 不動産業の事務職について 3 2022/11/27 01:06
- システム 古いWEBシステム。もう追加プログラムは作れない? それともできる? 6 2022/06/08 13:41
- IT・エンジニアリング 不具合の現状認識をしないプログラマって信用できる人? できない人? 8 2023/07/28 09:09
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ACCESSのデータをWebブラウザで...
-
MS-Accessのエクスポートで異常...
-
1回目の実行に3分、2回目の実行...
-
ACOSのRDBについて教え...
-
ACCESS2010 Excelエクスポート ...
-
postgresql についてです
-
ACCESS2003での150人同時利用
-
TPSとは・・・
-
マスタメンテとは?
-
エクセルのフィルタ抽出が固まる
-
復元に異常に時間がかかる
-
XamppでインストールしたMySQL...
-
OracleのROWIDについて…
-
PCが悪くなって新しいPCにSSMS...
-
SQL Server2000 バッチでデータ...
-
パラメーターエラーで復元でき...
-
SQLServerのDB(テーブル?)が...
-
videopad 無料版 アンインストール
-
SQL*Loaderのコミットポイント...
-
ログファイルの圧縮がされずに...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ACCESSのデータをWebブラウザで...
-
1回目の実行に3分、2回目の実行...
-
MS-Accessのエクスポートで異常...
-
業務用のデータベースサーバー...
-
Sqliteで使えない文字。
-
会社の諸事情により全システム...
-
SQL文で、重複データの上書きは...
-
ACCESS2010 Excelエクスポート ...
-
accessの上限容量2Gでは容量が...
-
oracleデータベースの更新履歴
-
SQL ServerにExcelをリンクさせ...
-
過去データに対するデータベー...
-
ACCESSのクエリからORACLEのDB...
-
データファイルに書き込まれる...
-
別サーバーへのデータの同期更...
-
暗号化したDBのデータ移行
-
SQLServerのDBのうちテーブルを...
-
ACOSのRDBについて教え...
-
SQLite3にて重みづけを行った抽...
-
ツリー情報のデータをSQLで取得...
おすすめ情報
プログラム自体はPHPで動作しているのですが、今回のような不具合は稀にしか発生しておらず、不具合発生時のクエリ条件の再現性も見られなかったため、データベース側を疑っています。