我们有一个非常相似的系统。我们从制造/分析设备收集数据,使用我们的算法处理原始数据,并将处理结果以标准格式存储在我们的Oracle数据库中。
如果您正在使用matlab进行处理,听起来您的数学知识比我们还要密集,但是我们仍然选择管理外部应用程序中的所有数据处理。我们的模式基本上是这样的:
CREATE TABLE RawData
(
RawDataId NUMBER(22) DEFAULT Null NOT NULL, (PK)
RawDataType VARCHAR2(50) DEFAULT Null NOT NULL,
ExposureToolId NUMBER(22) DEFAULT Null NULL,
EventTime DATE DEFAULT Null NULL,
... ( various columns descibing event characteristics) ...
Body LOB DEFAULT Null NOT NULL,
Length NUMBER DEFAULT 0 NULL
)
CREATE TABLE Analysis
(
AnalysisId NUMBER(22) DEFAULT Null NOT NULL, (PK)
RawDataId NUMBER(22) DEFAULT Null NOT NULL,
AnalysisName VARCHAR2(255) DEFAULT Null NOT NULL,
AnalysisType VARCHAR2(255) DEFAULT Null NOT NULL,
AnalyzeTime DATE DEFAULT Null NULL,
Status CHAR(1) DEFAULT Null NULL,
SentToServerDate DATE DEFAULT Null NULL,
ServerId NUMBER(22) DEFAULT Null NULL
)
CREATE TABLE DataSet
(
DataSetId NUMBER(22) DEFAULT Null NOT NULL, (PK)
AnalysisId NUMBER(22) DEFAULT Null NOT NULL,
DataSetName DATE DEFAULT sysdate NULL
)
CREATE TABLE Coefficient
(
DataSetId NUMBER(22) DEFAULT Null NOT NULL, (PK)
IdentifierId NUMBER(22) DEFAULT Null NOT NULL, (PK)
Coefficient FLOAT DEFAULT 0 NULL
)
从工具收集的数据进入rawdata表,在分析表中创建头记录时,指示数据需要处理,显示分析的名称和将进行处理的服务器;状态设置为“挂起”。然后,服务器将发送消息来执行工作,当它存储结果(在系数表中,按数据集分组)时,状态设置为“完成”(如果遇到问题,则设置为“错误”)。当服务器组件启动时,它们会在分析表中查询任何挂起的工作;这样,我们就可以确保在崩溃时没有丢失的工作。
这已经是我们的模型超过十年了,它工作得非常好。部署和维护不同版本的服务器模块很容易;在我看来,以这种方式管理可执行文件比在Oracle服务器上编译包更容易,但这可能只是我的偏见——将原始数据转换为分析数据似乎比数据库任务更“以应用程序为中心”。
本文介绍了一个成熟的数据处理与分析系统,该系统通过收集来自制造/分析设备的数据,并使用特定算法处理这些数据,最终将处理结果存储在Oracle数据库中。整个流程包括从原始数据表的创建到分析结果的存储,每一步都详细地记录下来。

被折叠的 条评论
为什么被折叠?



