Sharepoin学习笔记—架构系列--08 Sharepoint的数据模型(DataModel)、数据管理(Data Management)与查询(Query System)

       Sharepoint Foundation中的首要数据结构就是列表(List), 每个List属于某种List Type,与此类似,每个列表中的列(Column)属于某种FieldType,而每一条列表记录(List Item)属于某种Content Type.至于外部数据(External Data),即来自于Sharepoint Content Database数据库之外的数据,也能够在Sharepoint中显示和管理。

    一、列表(List)

       Sharepoint Foundation保存数据记录的方式类似于关系型数据库中的表(Table),只不过Sharepoint的术语称它们为列表(List),事实上这些数据记录被保存在Sharepoint内容数据库(Content Database)中,并以List的方式呈现给Sharepoint使用者。当然,Sharepoint的数据库不仅存放这些用户直接使用的数据,它还存放有Sharepoint的系统数据 : 如 Sharepoint场的配置数据(Configuration Data)、支持Sharepoint与外部数据源交互的BDC数据(用于支持BCS: Business Connectivity Services工作)。

可能有人就会问,为什么不直接使用数据库数据呢? 为什么非要在Sharepoint中以List方式绕一圈来表达?

这是因为Sharepoint Foundation的List与关系型数据库的数据表(Table)有以下方面的不同:

    1、访问支持

         Sharepoint的数据访问不支持SQL,事实上,Sharepoint的数据是通过服务器端代码(server-side Code)如LINQ或CAML来访问的,你可以通过编程使用Server Object Model或者 LINQ来写入数据到List。

在客户端,你可以使用Client Object Model或WCF Data Services(即以前的ADO.NET Data Service)来访问List数据。

    你不能使用SQL 查询语句或者存储过程(Store Procedure)来直接访问Sharepoint的后台数据

    2、关联字段

    与数据表(Table)类似,列表(List)由字段(Column)组成,Column中的值既可以来自Column的值定义也可能来自其它List,对于后一种情况,Sharepoint就叫它查阅字段。

查阅字段是Sharepoint配置为从其他列表中的字段获取其值的字段。将查阅字段添加到列表会在该列表和提供数据的列表之间建立一种关系。这也类似于关系数据库中的关系型数据表之间的关系,但不同的是为查阅字段提供数据的List中的字段并不要求必须是外键字段(Foreign Key)。

当然,所有的Sharepoint Foundation定义的Lists都有一个ID字段,这个ID字段事实上就是建立查阅关系时要用到的外键字段(Foreign Key),没有这样的字段,你也不可能建立起查阅关系。

        3、表联接 :    

        Lists 可以像关系数据表一样建立联接(Join),但建立联接的两List之间必须有查阅关系(Lookup Relation),否则这种Join就无法建立。也即:创建列表联接时要记住一些要求。您不能只是联接任何两个列表而不考虑类型。如果可以联接两个列表,就不仅仅是任何主字段和外字段可用作字段的联接对。主列表中的字段必须是 Lookup 类型的字段,它必须查找外列表中的字段。 出于此原因,所有联接都镜像列表之间的现有查阅关系。

  

  

 

     4、附加信息:

    Sharepoint Foundation的文档库(document library)是一种特殊的List,因为它的List记录可能会包括有文档附件(Attached Document)以及与此文档相关的描述字段(eg: 作者,创建时间,主题,最后修改者…….)。图片库也与此类似,只不过它的附件是以图片文件的方式提供。

    从上面的大致比较我们就可以知道,由于Sharepoint的特殊要求,我们不可以照搬关系型数据库那一套,我们只有按照Sharepoint特殊要求来建立数据的组织与使用。

       在Sharepoint中每个List都属于某个List Type,SharePoint Foundation包含有许多内置的List Type,比如: Announcements, Tasks, and Calendar等,用户可以直接拿来建立自己的List实例。

    当然,开发人员也可以根据用户的特定要求创建用户自定义的List Type。

 

二、内容类型与字段类型(Content Types and Field Types)

   1、内容类型(Content Types)

         List中的记录条即List Item也是属于某种类型(Content Type)的,所谓Content Type就是内容类型,它是 Microsoft SharePoint Foundation 2010 列表或文档库中一类项目或文档的元数据(列)、工作流、行为以及其他设置的可重用集合。借助于内容类型,可以采用集中的可重用方式来管理一类信息的设置。

     例如,假定这样一种业务情形:您具有三种不同类型的文档,分别为费用报表、采购订单和发票。所有这三种类型的文档都具有一些共同的特征;首先它们都是财务文档,并且包含的数据具有以货币表示的值。但是,每种类型的文档都具有各自的数据要求、各自的文档模板和各自的工作流。此业务问题的一种解决方案是创建四种内容类型(Content Type)。第一种内容类型"Financial Document"可以封装组织中所有财务文档共有的数据要求。其余三种内容类型("Expense Report"、"Purchase Order"和"Invoice")可以从"Financial Document"继承共有元素。此外,它们还可以定义每种类型特有的特征,如特定元数据集(meta data)、用于创建新项目的文档模板和用于处理项目的特定工作流。

     使用Content Type的最简单的方式就是使用Sharepoint Foundation内置的Content Type。Sharepoint Foundation有许多内置的Content Type,如: Event 和 Announcement。开发人员也可以根据用户需要开发用户自定义的Content Type.

  2、字段类型(Field Types)

    列表中的字段(Field)也属于某种类型(Field Type字段类型),这种类型是不同于存储在此字段中的值(Value)的数据类型(Data Type 如:整型、字符串、日期等等)的。SharePoint Foundation 的字段类型的定义不仅包括基础数据类型(如:整型、字符串、日期等等),而且还包括这些数值是如何格式化,如何呈现的(如:创建、显示、编辑这个字段所呈现给用户的表单界面)。SharePoint Foundation有许多内置的字段类型,如:Modified By, Due Date等等。开发人员也可以开发用户自定义字段类型(Field Type)。

 

三、外部数据列表与BCS (External Lists and the Business Connectivity Service)

      Sharepoint提供了强大的与外部数据源交互的能力,我们可以把诸如SAP,Oracle这样的外部数据库的数据资源呈现到Sharepoint界面上来。使用Sharepoint的Business Connectivity Services (BCS)不仅可以读取外部数据,而且支持写入。

下图显示了BCS中的主要组成部分及其它们之间的关系

        Business Data Connectivity (BDC) Service 是新版本的业务数据目录,它之前是在 Microsoft Office SharePoint Server 2007 中提供的,现在在 Microsoft SharePoint Foundation 2010 中提供。

    设计 BDC 的主要目的是,使您能够通过执行极少的编码工作,以声明方式从各种外部系统公开业务数据。

    为实现此目标,BDC 通过元数据模型(该模型提供了一致的简化客户端对象模型)来提供对基础数据源的同类访问。

    利用 BDC 服务,您能以声明方式对外部系统进行建模,以便您能公开 SharePoint Server 2010 中的外部数据(对于具有企业版客户端访问许可证的 Microsoft SharePoint Server 2010,也可在 Microsoft Office 2010 应用程序中执行此操作)。

       BDC 填补了 SharePoint 网站和业务应用程序之间的间隙,使您能够将各种外部系统中的关键数据引入 SharePoint 列表(通过新的外部列表功能和外部数据列)、Web 部件、搜索、用户配置文件和自定义应用程序。

       BDC 的核心功能是提供与各种外部系统的连接,并且它内部支持连接到以下类型的数据源:数据库、Windows Communication Foundation (WCF) 和 Web 服务、Microsoft .NET Framework 程序集、自定义数据源;

          BDC 元数据模型(BDC 模型)是 BDC 的核心。类似于 Entity(外部内容类型)和用于提取有关外部系统的复杂详细信息的 Method 的数据结构统称为 MetadataObjects,并包含 BDC 模型。

     外部系统的 BDC 模型实际上是一个 XML 文件,它是当您在 SharePoint Designer 中创建外部内容类型时自动生成的。在创建一个模型并将该模型上载到运行 SharePoint Server 的服务器上的 BDC 元数据存储之后,可随时在 SharePoint Server 中和 Microsoft Office 应用程序(例如,Microsoft Outlook、Microsoft SharePoint Workspace 和 Microsoft Word)中使用该模型中定义的外部内容类型,以使用 Business Connectivity Services 的演示功能和自定义解决方案根据上下文显示外部数据。我们可使用 SharePoint Server 管理中心内的"BDC 应用程序服务"页中的"导出"选项,或使用 SharePoint Designer 中的外部内容类型的"导出"选项随时查看 BDC 模型。

         BDC 模型存储在关系数据库(此数据库不同于Content Database与Configuration Database)中,它在Sharepoint叫metadata store,在 BDC 运行时可以解释这些模型之前,需要将这些BDC 模型加载或具体化到内存中。数据库表和用于保留、读取和修改 BDC 模型的存储过程的集合构成了 BDC 元数据存储组件。只有在 Business Connectivity Services 的服务器部署上,此组件才会存在。

        在BDC 模型存储到关系数据库Metadata Store之后,用户就可以通过多种途径使用它,比如:用户可以创建一个基于外部内容类型(External Content Type)的数据列表(List)。也可以基于已经存在的List向其添加一个来自于外部内容类型的新字段。SharePoint Server 2010在BCS方面有许多加强,它包含一些内置的Webpart来使用External Data,包括搜索外部数据。此外,SharePoint Workspace与Microsoft Office的客户端应用程序也能做到直接获取外部数据。在SharePoint Server 2010中,用户还能做到索引与搜索外部数据源(External data sources)

    当某个Sharepoint的客户端应用程序请求外部数据时,运行在前端Web服务器上的BDC运行时(BDC Runtime)会向本地的缓存(Locally Cache)请求BDC 模型数据,这些BDC 模型数据是从BDC metadata store中复制到缓存以提高运行效率的。BDC运行时在得到此模型数据后就可以向客户端应用程序提供针对外部数据的相关操作了。与此类似,在客户端也缓存得有BDC 模型数据,BDC的客户端运行时(BDC Client Runtime)会基于此BDC 模型数据提请外部数据访问请求。当然,申请到的外部数据会保留在客户端以支持客户端的离线操作。

    在BDC 服务启动起来并且所需的BDC模型数据也成功注册后,最终用户就可以使用外部数据了。他们既可以使用无代码方式(non-code)使用外部数据,也可以采取比较复杂的编程方式来使用外部数据。BDC运行时提供了一整套API来支持开发人员通过开发WebPart或其它解决方案与外部数据源交互。

       由于BDC模型数据提供了一个类似于中间层的机制,当通过代码访问和操作外部数据源数据时,即使是针对不同的数据源对象,Sharepoint也能使用相同的代码作相关访问,BDC模型数据会自动把这个操作转化为针对不同数据源的具体的对应操作,这样就保证了在Sharepoint端访问数据的一致性表达,也就是说你可以使用同一套BDC运行时提供的API来访问外部数据,而无需根据外部数据源的不同使用不同的API。

    需要注意的的BDC解决方案是在场级别进行打包和部署的,你不可以在沙盒方案中创建和部署与BDC。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/437924.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

执行 redis-dump 报错:ERROR (Errno::ENOENT): No such file or directory - ps -o rss= -p xxxxx

redis-dump 命令用于 Redis 数据的导出,执行该命令时报错如下: C:\Users\Lenovo>redis-dump -u 127.0.0.1:6379 ERROR (Errno::ENOENT): No such file or directory - ps -o rss -p 3944解决方法:找到 Ruby 安装目录下的 dump.rb 文件&a…

Sharepoint学习笔记 –架构系列—09 Sharepoint的服务器端对象模型(Server Object Model) 1.物理对象层次结构

关于Sharepoint的服务器端对象模型的内容很庞大很繁杂,而事实上,我们在这里只把最关键的对象梳理一下,我们会从三个体系来大致描述它们。 这三个体系分别是: 1、物理对象层次结构(Physical Objects Hierarchy) 2、内容层次结构(Co…

执行 redis-dump 报错:Error connecting to Redis on localhost:6379 (Redis::TimeoutError)

拿本地的 Redis 做测试,运行在 6379 端口上,使用 redis-dump -u localhost:6379 命令用于数据的导出,执行该命令时报错如下: C:\Users\Lenovo>redis-dump -u localhost:6379 Error connecting to Redis on localhost:6379 (Re…

Sharepoint学习笔记 –架构系列—10 Sharepoint的服务器端对象模型(Server Object Model) 2.内容层次结构

Sharepoint的内容层次结构(Content Hierarchy)包括表示可发布数据项(publishable items),如列表项的类,还包括表示嵌套的数据容器(nested containers of data),如列表、内容数据库、网站、网站集以及称为"Web 应用程序"…

Sharepoint学习笔记 –架构系列—11 Sharepoint的服务器端对象模型(Server Object Model) 3.服务层次结构

前面我们看了一下Sharepoint服务器对象模型的物理对象层次(Physical Objects Hierarchy)和对象内容层次(Content Hierarchy)中的相关类,这里来看看服务层次结构,其中包括表示 Web 服务(WebService)、Windows 服务(WindowService)、其他类型的服务(Icomin…

pyspider all 启动失败:ValueError: Invalid configuration

执行 pyspider all 启动命令报错如下: C:\Users\Lenovo>pyspider all e:\python\lib\site-packages\pyspider\libs\utils.py:196: FutureWarning: timeout is not supported on your platform.warnings.warn("timeout is not supported on your platform.&…

Sharepoint学习笔记 –架构系列—12 Sharepoint的客户端对象模型(Client Object Model)

前面过了一下Sharepoint的服务器端对象模型,接下来就让我们大致看看Sharepoint的客户端对象模型(Client Object Model: Client OM)。 首先需要了解的就是Sharepoint的客户端模型是在Sharepoint2010才开始引入的,之前没有这个概念。 一、为什么要引入客户…

Hexo 双线部署到 Coding Pages 和 GitHub Pages 并实现全站 HTTPS

2022-01-25 更新:博客新地址:https://www.itbob.cn/,文章距上次编辑时间较远,部分内容可能已经过时! 我的博客地址:https://www.itrhx.com/ 部署到 Coding Pages 的好处:国内访问速度更快&…

Git得基本使用方法add、commit、push、checkout以及Pull

一、Git是什么? Git是目前世界上最先进的分布式版本控制系统。 Working Directory:工作区 Index / Stage:暂存区 Repository:仓库区(或本地仓库) Remote:远程仓库 由于前面2篇文章已经简单得…

Coding Pages 申请 SSL 证书错误:urn:acme:error:unauthorized: Invalid response from http://xxxxx/

Coding Pages 申请 SSL/TLS 安全证书出现以下错误&#xff1a; urn:acme:error:unauthorized: Invalid response from http://www.xxxx.cn/.well-known/acme-challenge/ysOz9wW3U_GFPP8kRP4w8uknBZ9UfiUT7t2xpu9pDCw [185.199.111.153]: "\n\n \n <meta http-equiv“Co…

Hexo 博客提交百度、谷歌搜索引擎收录

2022-01-25 更新&#xff1a;博客新地址&#xff1a;https://www.itbob.cn/&#xff0c;文章距上次编辑时间较远&#xff0c;部分内容可能已经过时&#xff01; 文章目录● 写在前面&#xff08;必看&#xff09;● 查看网站是否被收录● 百度资源平台添加网站● 提交百度搜索●…

工作区、暂存区、版本库、远程仓库

一、概念 1、四个工作区域 Git本地有四个工作区域&#xff1a;工作目录&#xff08;Working Directory&#xff09;、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git仓库(Remote Directory)。文件在这四个区域之间的转换关系如下&#xff1a; Workspace&#x…

Python3 爬虫学习笔记 C17【爬虫框架 pyspider — 基本使用】

Python3 爬虫学习笔记第十七章 —— 【爬虫框架 pyspider — 基本使用】文章目录【17.1】初识 pyspider【17.2】使用 pyspider【17.2.1】主界面【17.2.2】项目界面【17.3】使用 pyspider 爬取去哪儿网【17.3.1】爬取首页【17.3.2】信息匹配【17.3.3】抓取下一页数据【17.3.4】抓…

什么是RPA 现在都有哪些产品

作者&#xff1a;小金同学 链接&#xff1a;https://www.zhihu.com/question/264066539/answer/730946238 来源&#xff1a;知乎 著作权归作者所有。商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处。 什么是RPA&#xff1f; 根据机器人流程自动化和人工智能研…

Sharepoint学习笔记—ECM系列—1 Content Type Syndication

我们可以通过Content Type Syndication来实现在Sharepoint Farm内的不同Site Collection之间共享内容类型(Content Types).也就是说&#xff0c;管理员可以为某个元数据服务(Metadata Service)指定一个网站集(Site Collection)来充当Content Type Hub&#xff0c;Content Type …

Python3 爬虫实战 — 猫眼电影TOP100【requests、lxml、Xpath、CSV 】

爬取时间&#xff1a;2019-09-23爬取难度&#xff1a;★☆☆☆☆☆请求链接&#xff1a;https://maoyan.com/board/4爬取目标&#xff1a;猫眼电影 TOP100 的电影名称、排名、主演、上映时间、评分、封面图地址&#xff0c;数据保存为 CSV 文件涉及知识&#xff1a;请求库 requ…

Sharepoint学习笔记—ECM系列--2 管理元数据服务应用Metadata Service Application

这里简单介绍一下Sharepoint2010的元数据服务应用Metadata Service Application的创建&#xff0c;修改和删除&#xff0c;在进行此类操作前&#xff0c;你必须是Sharepoint管理中心管理组的成员&#xff0c;即你有权限进入Sharepoint管理中心进行操作。 一、Metadata Service…

Python3 爬虫实战 — 豆瓣电影TOP250【requests、Xpath、正则表达式、CSV、二进制数据储存】

爬取时间&#xff1a;2019-09-27爬取难度&#xff1a;★★☆☆☆☆请求链接&#xff1a;https://movie.douban.com/top250 以及每部电影详情页爬取目标&#xff1a;爬取榜单上每一部电影详情页的数据&#xff0c;保存为 CSV 文件&#xff1b;下载所有电影海报到本地涉及知识&am…

Sharepoint学习笔记—ECM系列--3 从.CSV文件导入术语集(Term Sets)

Sharepoint2010支持直接从CSV文件导入术语集(Term Sets)&#xff0c;也就是说你可以先直接在Excel中创建和编辑术语集&#xff0c;然后保存为.CSV文件&#xff0c;再通过Sharepoint2010管理中心提供的管理界面导入术语集到指定的Metadata Service下的指定组中,下面我们来看看如…

使用 hexo-git-backup 插件备份你的 Hexo 博客

2022-01-25 更新&#xff1a;博客新地址&#xff1a;https://www.itbob.cn/&#xff0c;文章距上次编辑时间较远&#xff0c;部分内容可能已经过时&#xff01; 欢迎关注我的专栏&#xff1a;《个人博客搭建&#xff1a;HexoGithub Pages》&#xff0c;从搭建到美化一条龙&…