私は、製品の価格設定と生産計画のために協力している会社のために、拡張可能なソフトウェアを開発中です。
現在のシナリオ
製品には基本的に2つのタイプがあります:製造と取引(変換なしの単純な売買)。製造は通常または受注生産であり、受注生産はほとんど通常のモデルから逸脱しています。商品の数は限られていますが(2000年頃)、各商品にはサイズ、色、色合いなどの複数の属性があります。現在、在庫とまともな会計パッケージを備えた注文管理のためのソフトウェアがあります。原価計算と価格設定は、いくつかのモデルをサンプリングし、間接費とマージンのパーセンテージを追加することにより、任意に行われるようになりました。
必須
提案されたデザイン
以下のデザインを提案しました。
すべてのデータはJSON形式で保存され、すべてのビジネスロジックはJSONファイル(技術的には、私の場合はPython辞書)を解析し、キーと値に基づいて出力を生成するように記述されています。
では、なぜ私はここにいるのですか?
現在のソフトウェア会社は、カスタマイズ可能な従来のすぐに使えるRDBMSシステムを推奨しています。このシステムで私が見つけた主な問題は、さまざまな属性を持つ製品のデータの重複、分析ツールの欠如、製品と価格との緊密な結合、複雑なクエリの結合が多すぎることですが、堅牢性と集計分析を向上させるために推奨されます。 XXXXは常に、市場がこのアプローチを実行していると語っています。ソフトウェア全体がリアルタイムで使用されることはなく、リアルタイムシステムのほとんどは独自の製品にのみリンクしているためです。
基本的には数字を使って作業しますが、将来拡張できる汎用モデルを考えています。
NoSQLベースのソリューションよりも優れたツールを見つけ、(より重要な)RDBMSベースのソリューションに精通している可能性があります。通常、パフォーマンスの制限(ストレージの量、1秒あたりのクエリ数など)に達し始めた場合は、NoSQLベースのソリューションを検討する必要があります。
ほとんどすべてのNoSQLソリューションは、整合性、可用性、またはパーティション許容度の要件を緩和し( CAP定理 を参照)、アプリケーションロジックでそれを処理する必要があります。 IMO、実際にRDBMSの制限に達していない限り、この複雑さは控えるべきです。