`

元数据(metadata)在企业应用开发中的作用

    博客分类:
  • XML
阅读更多
元数据(metadata)介绍:
Metadata(元数据),它是“关于数据的数据”(data about data),近年来在软件设计中Metadata有广泛的应用。
在编程中,元数据不是被处理的对象,而是通过改变元数据的一些“值”来改变程序的运行的数据。
可以“解释”程序的运行时,不同的元数据值可以让同一段程序有不同的运行结果。
元数据(metadata)应用:

在以前的工作中,经常遇到这样的问题,

SqlServer数据库中一个表如下:

CREATE TABLE [dbo].[DProfile] (

       [Profile_ID] [int] IDENTITY (1, 1) NOT NULL ,

       [ProfileName] [varchar] (250) COLLATE Chinese_PRC_CI_AS NULL ,

       [OtherInfo] [varchar] (500) COLLATE Chinese_PRC_CI_AS NULL ,

       [ValidateStatus] [int] NULL

) ON [PRIMARY]

为其定义一个实体类:

namespace E_Commerce.Data

{

       /// <summary>

       /// 卡属性基本信息实体

       /// </summary>

       public class DProfileInfo

       {

              /// <summary>

              /// 其他信息

              /// </summary>

              public string OtherInfo

              {

                     get

                     {

                            /*Begin Template                      

return mOtherInfo;                

                            /*End Template Expansion{9D774738-E901-427A-86E7-EF2715768C17}*/

                     }

                     set

                     {

                            /*Begin Template Expansion{F6A2B75D-D01B-47B0-B65D-E62E43286DDC}*/

                            mOtherInfo = value;                   

                            /*End Template Expansion{F6A2B75D-D01B-47B0-B65D-E62E43286DDC}*/

                     }

              }

              /// <summary>

              /// 卡属性ID

              /// </summary>

              public int Profile_ID

              {

                     get

                     {

                            /*Begin Template Expansion{2230D3C4-9766-4778-9203-5063D88B468C}*/

                            return mProfile_ID;             

                            /*End Template Expansion{2230D3C4-9766-4778-9203-5063D88B468C}*/

                     }

                     set

                     {

                            /*Begin Template Expansion{0A1C9514-4DDB-4079-BE19-8DACE24CD454}*/

                            mProfile_ID = value;                  

                            /*End Template Expansion{0A1C9514-4DDB-4079-BE19-8DACE24CD454}*/

                     }

              }

              /// <summary>

              /// 卡属性名称

              /// </summary>

              public string ProfileName

              {

                     get

                     {

                            /*Begin Template Expansion{A43788B8-60A0-4882-9C51-A3DEE710FE78}*/

                            return mProfileName;                 

                            /*End Template Expansion{A43788B8-60A0-4882-9C51-A3DEE710FE78}*/

                     }

                     set

                     {

                            /*Begin Template Expansion{829EEF0A-A18A-4492-BE57-67C4C57ACFC3}*/

                            mProfileName = value;               

                            /*End Template Expansion{829EEF0A-A18A-4492-BE57-67C4C57ACFC3}*/

                     }

              }

              private string mOtherInfo;

              private int mProfile_ID;

              private string mProfileName;

       }

}
在开发和实际运行过程中经常发生这样情况,经过一段时间用户的实际情况变化了,可能想要在上面的实体中和其所对应的数据库的Table中增加一个或多个Field。我们只能修改这个数据实体,在代码开发完成后,进行这样的修改是麻烦而且可能相当危险的。

设想一下现在的情况,由于种种原因需要更改上面的数据结构,我们打算增加两个字段“Price”“CreateTime”,有什么方法可以让数据实体容易适应的进行这种变化呢

两种方法:

1)  在表DProfile中增加一个描述所增加的Field的元数据字段名称为FieldsMetaInfo,数据类型可以定义成Text类型或image等二进制类型,在这个字段中定义一个XML格式的文档描述和存储所新增加的Field。

格式可能是这样的

<Field Name="Price" FromBaseType="TRUE" Type="Text" DisplayName="价格" Required="TRUE" MaxLength="255" DefaultValue=”0”  >123.45</Field>

<Field Name=" CreateTime " FromBaseType="TRUE" Type="DateTiem" DisplayName="价格" Required="TRUE"  >2004-01-01</Field>

这个新添加的字段记录未来可能增加的field的数据类型信息和数据信息等其它信息

2)  增加两个表

在表中存储新增加的Field信息

表ProfileFields

ID  int

FieldName nvarchar(50)

FieldType  nvarchar(50)

表ProfileFieldsValue

ID int

ProfileID int

ProfileValue varchar(50)

ProfileFields表存储增加的Field名称类型等信息

表ProfileFieldsValue表存储对应Filed的值


在数据实体类中增加一个自定义类型的属性返回存储在源数据结构中的数据

可以是Hashtable类型,也可以是自定义的其它集合类型

Private Hashtable metaFieldsList;

自定义结构用来方便的存储和更新


元数据(metadata)数据存储结构:
元数据有许多存储格式,其中最多使用的是xml格式。
xml最适合用来存储元数据,易与使用和解析。

原文:http://www.cnblogs.com/umlchina/archive/2004/08/12/metadata.html
分享到:
评论

相关推荐

    java读取metadata元信息

    在Java编程中,元数据(Metadata)是指关于数据的数据,它提供有关文件、数据库记录、类、方法等的附加信息,但不直接构成这些实体的实际内容。元数据可以帮助理解和处理这些对象,例如,图片的元数据可能包含拍摄...

    元数据参考资料(metadata)

    本文将深入探讨元数据的概念、格式、工具以及其在数字化图书馆中的应用体系,旨在全面解析这一关键概念。 ### 元数据的本质与定义 元数据的核心概念是“data about data”(关于数据的数据),这一定义虽简洁却...

    metadata公共元数据项目源码

    本篇文章将深入探讨“metadata公共元数据项目”的源码,帮助读者理解元数据的重要性和其在实际项目中的应用。 “metadata公共元数据项目”是一个开源项目,其代码存储于GitHub...

    Laravel开发-metadata

    在Laravel中,metadata可以用于记录用户偏好、应用程序状态,甚至是自定义的元数据,比如模型的附加信息。例如,你可以为每个用户创建一个metadata集合,存储他们的喜好设置,如首选语言、主题颜色等。这可以通过...

    dotnet-MetadataExtractor从图片和电影文件提取ExifIPTCXMPICC等其它元数据

    《.NET开发中的MetadataExtractor:从图片和电影文件提取元数据》 在.NET开发领域,图形处理是一项重要的任务,尤其在处理图像和视频时,往往需要获取和理解媒体文件的元数据。元数据包含了关于文件的重要信息,如...

    mediautil+metadata-extractor

    这个工具包含两个核心组件:`meduautil-1.0.jar`和`metadata-extractor-2.3.1.jar`,它们都是Java编写的库文件,可以方便地集成到各种Java应用程序中来读取和解析多媒体文件的元数据。 首先,我们来看`metadata-...

    DatabaseMetaData生成数据库DLL

    在IT行业中,数据库是...通过正确地使用它,我们可以生成数据库的DDL,这在数据库管理和应用程序开发中具有广泛的应用价值。然而,使用时需注意适应不同的数据库系统,并确保生成的脚本符合目标数据库的语法和特性。

    微软.NET核心文档(5/6)--《Metadata API(元数据API)》

    《Metadata API(元数据API)》是针对微软.NET Core运行时(CLR)元数据的创建和导入的API规范。这个API是非托管的,主要用于编译器、加载器和其他需要快速访问元数据、并且在遍历关系(如类层次结构)或操作集合(如...

    前端项目-reflect-metadata.zip

    总的来说,Reflect Metadata API是现代JavaScript和TypeScript开发中的一个重要工具,它增强了我们对代码的元数据管理能力,使我们在构建复杂系统时能更加灵活和高效。通过深入学习和实践,开发者可以充分利用这一...

    jQuery.metadata.js

    《jQuery.metadata.js:深入解析jQuery插件的元数据应用》 在Web开发中,jQuery库以其易用性和强大的功能深受开发者喜爱。而jQuery.metadata.js是jQuery生态中的一个重要插件,它扩展了jQuery的核心功能,允许...

    metadata-extractor-2.x资源jar包

    在Java开发中,处理图像文件时,我们经常需要获取或修改图像的元数据,尤其是对于JPEG格式的图片,其内部包含了丰富的EXIF(Exchangeable Image File Format)信息,如GPS定位、拍摄方向等。metadata-extractor-2.x...

    metadata-extractor.jar

    元数据提取库如`metadata-extractor.jar`,在开发中扮演着至关重要的角色,特别是在Java和Android平台上处理图像时。 `metadata-extractor.jar`是一个开源的Java库,由Drew Noakes创建,用于从各种图像和视频文件中...

    jquery.metadata.2.0

    Metadata插件2.0是对早期版本的改进和优化,提高了性能和兼容性,使其在现代Web开发中依然具有实用性。 二、Metadata插件的工作原理 Metadata插件通过解析元素的类名或属性值来提取元数据。元数据可以嵌入在HTML...

    jquery.metadata.js.zip

    jQuery Metadata插件的核心功能就是解析和提取这些隐藏在HTML元素属性中的元数据。它主要通过两种方式实现:旧式语法和新式语法。 1. **旧式语法**: 旧式的元数据语法是在HTML元素的class属性中以特定格式包含数据...

    metadata在Activity中配置,并获取对应的值和resourceid

    在Android开发中,Metadata是一个非常重要的概念,它允许开发者在应用程序的组件(如Activity、Service等)中存储元数据信息。这些元数据可以是字符串、整数或任何其他类型的数据,用于提供额外的信息,比如权限需求...

    kotlin-metadata,.zip

    总之,`kotlin-metadata`库是Kotlin开发中的一个强大工具,它使开发者能够以类型安全且易于理解的方式访问和利用Kotlin编译后的元数据。这个开源项目不仅增强了Kotlin生态系统的功能,还促进了社区的创新和合作。...

    informatica 元数据管理手册.rar

    10. **最佳实践**:手册还将提供一系列最佳实践,指导用户在实际工作中有效应用Informatica的元数据管理功能,以提升企业的数据治理能力和业务洞察力。 总之,《Informatica元数据管理手册》是理解、实施和优化...

    Informatica元数据管理向导

    本文将详细介绍Informatica元数据管理的相关知识点,包括其在整个管理过程中的作用、如何使用元数据以及如何充分利用元数据来提高工作效率。 ### Informatica元数据管理的核心概念 #### 1. **元数据定义** - 元...

    MetaData非托管API

    - **RAD工具风格的交互方式**:适用于快速应用开发工具,提供了更高级别的接口以支持更加复杂的元数据管理需求。 #### 1.2 元数据抽象 元数据API采用了若干抽象概念来简化元数据的操作。这些概念包括但不限于元...

    metadata-extractor-2.8.1 jar包以及源码以及使用例子

    完成这一步后,你就可以在你的代码中调用metadata-extractor的API来读取文件的元数据了。 下面是一个简单的使用示例: ```java import com.drew.metadata.Metadata; import ...

Global site tag (gtag.js) - Google Analytics