刘旭东 cameran@hit.edu.cn Monday, March 20, 2017 软件体系结构 8 以数据为中心的体系结构风格 刘旭东 cameran@hit.edu.cn Monday, March 20, 2017
主要内容
主要内容 仓库(repository style) 数据库 黑板结构(blackboard style)
8.1 两个简单的例子
例1:注册表(Windows Registry)
注册表的结构 最初,硬件/软件系统的配置信息均被各自保存在一个配置文件中(.ini); 这些文件散落在系统的各个角落,很难对其进行维护; 应用程序1 应用程序2 硬件 树形注册表 (共享仓库) App1.ini App2.ini Hardware .ini …
注册表(Windows Registry) 注册表中存在着系统的所有硬件和软件配置信息,如启动信息、用户、BIOS、各类硬件、网络、INI文件、驱动程序、应用程序等; 注册表信息影响或控制系统/应用软件的行为,应用软件安装/运行/卸载时对其进行添加/修改/删除信息,以达到改变系统功能和控制软件运行的目的。
例2:剪贴板 (Clipboard) 剪贴板 当前数据1 应用1 应用2 应用n 复制 读取 当前数据k …
剪贴板 (Clipboard) The clipboard is a software program that is used for short-term storage of data as it is transferred between documents or applications(剪贴板是一个用来进行短时间的数据存储并在文档/应用之间进行数据传递和交换的软件程序) 用来存储带传递和交换信息的公共区域(形成共享仓库); 不同的应用程序通过该区域交换格式化的信息; 访问剪贴板的方式:copy & paste.
8.2 仓库风格 Repository
仓库风格的基本构件 A repository is a central place where data is stored and maintained. (仓库是存储和维护数据的中心场所) In a repository style there are two quite distinct kinds of components (在仓库风格中存在两类构件) A central data structure representing the current state; (中心数据结构,表示当前数据的状态) A collection of independent components operate on the central data store. (一组对中心数据进行操作的独立构件)
仓库风格的连接件 Connector: Interactions between the repository and its external components.(连接件:仓库与独立构件之间的交互) Two major mechanisms: (存在两种交互机制) Database: the types of transactions in an input stream trigger selection of process to execute; (数据库方式:输入流中的事务类型触发需要执行的过程) Blackboard: the current state of the central data structure is the main trigger for selecting processes to execute. (黑板结构:中心数据结构的当前状态触发并选择需要执行的过程)
仓库风格:共享信息体系结构 仓库风格实际上是一种“客户机-服务器”风格; 仓库作为一个“共享的信息源”,向多个客户机提供服务。——共享信息体系结构(Shared Information Style) 复杂信息的收集、操作、保存 典型应用场合: Data processing (数据处理), driven primarily by the need to build business decision systems from conventional databases. Software development environments (软件开发环境), driven primarily by the need to represent and manipulate programs and designs.
信息共享技术的发展历程 The earliest shared information systems consisted of separate programs for separate subtasks.(阶段1:最初的系统是由各个独立的程序构成,手工在各自之间传递数据) Later, multiple independent processing steps were composed into larger tasks by passing data in a known, fixed format from one step to another (阶段2:各个独立的步骤之间通过固定的格式传递数据) Then, new organizations allowed independent processing subsystems to interact through a shared data store. (阶段3:通过共享的数据仓库进行数据交换)
8.2.1 仓库体系结构风格示例之一: 数据库系统
数据库与数据库系统 A database is an organized collection of data A database system is a term that is typically used to encapsulate the constructs of a data model, database Management system (DBMS) and database.
数据库系统的发展阶段 顺序批处理阶段(Batch sequential processing) 交互式阶段 (Interactive transaction processing) 现代数据库系统体系结构 (Central database) 异构多数据库的集成 (Federated database) 分布式数据库系统 (Distributed database) No-SQL数据库系统(Not Only SQL database)
数据库技术的发展历程之一:顺序批处理阶段 In early database applications, individual database transactions were collected into large batches. (最初的数据库应用程序中,各个数据库事务不是单独提交,而是形成批事务) A typical organization included the following: A massive edit program (事务编辑) A massive transaction sort (事务排序) A sequence of update programs (事务执行) …回忆第3次课“数据流风格”中的“顺序批处理风格”
数据库技术的发展历程之一:顺序批处理阶段 First period: Batch Databases Massive and periodic updates
数据库技术的发展历程之二:交互式阶段 Batch processing can’t satisfy the needs of interactive transaction (批处理的方式无法满足交互式和实时性事务的需要) …需要对数据进行即时存取,而不是要等到批处理结束 Because the set of transactions and queries grew, it is very difficult to modify a single large update program and a single large reporting program for each change to a transaction. (随着事务数量的增加,单一的事务更新程序成了影响系统性能的瓶颈)
数据库技术的发展历程之二:交互式阶段 Second period: real time individual transactions
数据库技术的发展历程之三: 现代数据库系统体系结构 Modern Database System Architecture
数据库系统的三层结构
数据库的访问方式
数据库的访问模式
数据库的访问方式 Embedded SQL JDBC/ODBC Object Rational Mapping
Embedded SQL Embedded SQL is a method of combining the computing power of a programming language and the database manipulation capabilities of SQL. Embedded SQL statements are SQL statements written inline with the program source code of the host language. The embedded SQL statements are parsed by an embedded SQL preprocessor and replaced by host-language calls to a code library. The output from the preprocessor is then compiled by the host compiler. This allows programmers to embed SQL statements in programs written in any number of languages such as: C/C++, COBOL and Fortran. Notice: MySQL does not support Embedded SQL.
JDBC JDBC is a Java-based data access technology (Java Standard Edition platform) from Sun Microsystems, Inc.. It is not an acronym as it is unofficially referred to as Java Database Connectivity. This technology is an API for the Java programming language that defines how a client may access a database. It provides methods for querying and updating data in a database. JDBC is oriented towards relational databases. There are several categories of JDBC drivers available. 1. JDBC-ODBC bridge + ODBC driver 2. Native API, partly Java driver 3. JDBC-Net, pure Java driver 4. Native protocol, pure Java driver http://www.ustudy.in/node/5475
JDBC-ODBC Bridge 在windows环境下比较常用 效率较低 需安装ODBC driver 不是纯的java方案
Native Protocol 纯java方案,效率较高 只有数据库厂商自己才能提供这种类型的JDBC驱动 需要针对不同的数据库使用不同的驱动程序 使用时需把驱动程序加入到应用程序的类库中
Object-relational mapping Object-relational mapping (ORM, O/RM, and O/R mapping) in computer software is a programming technique for converting data between incompatible type systems in object-oriented programming languages. Data management tasks in object-oriented (OO) programming are typically implemented by manipulating objects that are almost always non-scalar(标量) values. However, many popular database products such as structured query language database management systems (SQL DBMS) can only store and manipulate scalar values such as integers and strings organized within tables. Example: A "Person object" comprises: the person's name, a list of phone numbers, and a list of addresses.
ORM的优点 提高生产率(Productivity) 可维护性(Maintainability) Insulates, to some extent, the application developer from vendor-specific SQL extensions Permits the application developer to exploit object-orientation and model and manipulate the application view differently from the relational model(OO方式操作数据库,不避来考虑SQL细节) 可维护性(Maintainability) ORM保证了正确性 厂商独立性(Vendor independence) 切换到其他数据库,程序不需要修改
Hibernate User Interface UI event data xfer object Application Logic data request domain object Domain Objects DAO Hibernate API domain object SessionFactory Hibernate hibernate.cfg.xml JDBC API ResultSet, etc. *.hbm.xml class mappings Foundation Classes JDBC
Hibernate接口 Configuration类 SessionFactory接口 Session接口 Transaction接口 Configuration类负责配置并启动Hibernate,创建SessionFactory对象。 SessionFactory接口 SessionFactory接口负责初始化Hibernate。它充当数据存储源的代理,并负责创建Session对象。因为一般情况下,一个项目通常只需要一个SessionFactory就够,当需要操作多个数据库时,可以为每个数据库指定一个SessionFactory。 Session接口 Session接口负责执行被持久化对象的CRUD操作(CRUD的任务是完成与数据库的交流,包含了很多常见的SQL语句)。 Transaction接口 Transaction接口负责事务相关的操作。它是可选的,开发人员也可以设计编写自己的底层事务处理代码 Query和Criteria接口 Query和Criteria接口负责执行各种数据库查询。它可以使用HQL语句或SQL语句两种表达方式。
数据库技术的发展历程之四: 异构多数据库的集成 Integration of Heterogeneous Databases
多数据库访问 Large databases are normally used by many different applications and the same applications are using many different databases. (一个数据库可被多个用户使用,同一个应用可以访问多个数据库) Application Application 1 DB DB 1 DB 2 DB 3 Application 2 Application 3
多数据库访问中存在的问题 All applications need to know how to manage the access to a large database. There is little reuse of the functions needed to efficiently access large datasets. (针对不同类型的数据库,所有的应用需要编写不同的数据访问程序,而且需要了解任何一个数据库的特性——对数据库的读写功能没有复用) Inconsistencies and redundancies occur in the data when different applications access the same databases and each application has its own assumptions on which constraints or dependencies hold. (数据将会产生不一致与冗余的情况) Concurrent access to the same data leads to conflicts if multiple applications are using the same database at the same time. (并发访问数据库会带来数据的冲突)
多数据库访问中存在的问题 Dependencies exist: among databases (databases assume the existence of certain data in other databases), databases and applications (applications assume certain properties to hold in the database), among applications (applications assume that other applications are performing certain operations) (在不同的数据库、数据库与应用、应用之间存在较多的依赖,独立性差) Changes in the data and applications become difficult to manage. Since the “knowledge” on dependencies is distributed in many places and since the same functionality is implemented in many places each change becomes a complex task to perform. (对数据/应用程序的修改将会很困难)
解决途径:多数据库集成 Application 2 Application 1 Data Data 1 Data 2 Data 3 Unique interface to DB DDL/DML
联邦数据库的体系结构
多数据库集成的实现:联邦数据库管理系统 (Federated DBMS) 多个数据库提供统一的访问数据库的界面 应用程序感觉不到是在访问多个数据库 http://www.ibm.com/developerworks/data/library/techarticle/0203haas/0203haas.html http://msdn.microsoft.com/en-us/library/aa177979(v=sql.80).aspx http://publib.boulder.ibm.com/infocenter/db2luw/v9r7/index.jsp
IBM federated database technology Configuring a federated system (federated DDL) Create Wrapper Create Server Create Nickname Create Function … 课下阅读: http://www.ibm.com/developerworks/data/library/techarticle/0203haas/0203haas.html
多数据库集成的实现:其他方式? Hibernate能否担此重任?
数据库技术的发展历程之五: 分布式数据库系统 Distributed Database System
思考问题 考虑以下问题: 电商、微博、搜索引擎等数据库数据量非常大,数据量甚至达到PB级别,而且需要接受大规模并发访问,日访问量甚至达到亿次级别。 怎么办? ——将一个数据库进行切分,形成分布式数据库
分布式数据库的体系结构
全局关系、逻辑片断与物理映像
分布式数据库的分布透明 分片透明性 位置透明性 局部数据模型的透明性 复制透明性 用户或应用程序只对全局关系进行操作而不必考虑数据的分片,分片模式改变时,只需改变全局模式到分片模式的映像,而不影响全局模式和应用程序。 位置透明性 用户或应用程序要了解分片情况,但不必了解片段的存储场地。当存储场地发生变化时,只需改变分片模式到分布模式的映像,而不影响分片视图、全局视图和应用程序。 局部数据模型的透明性 用户或应用程序要了解分片以及各片段存储场地,但不必了解局部场地上使用的是哪一种数据模型。模型的转换以及查询语言的转换由分布视图到局部概念视图的映像来完成。 复制透明性 为了提高分布式系统的性能和实用性,系统中的有些数据并不是只存放在一个场地,很可能同时重复地存放在不同的场地。
分布式数据库的集群部署方式 基于数据库引擎的集群技术 基于数据库网关(中间件)的集群技术 共享或非共享存储 非共享存储 客户应用 客户应用 分布式数据库中间件 数据库 引擎 数据库 引擎 数据库 引擎 数据库 引擎 数据库 引擎 数据库 引擎 共享或非共享存储 非共享存储
分布式数据库中间件 Spanner,来自Google,目前应用规模最大的分布式数据库中间件 Hibernate Shards,来自Hibernate,开源 Gizzard ,来自Twitter ,开源 Amoeba,来自alibaba,开源 Cobar,来自alibaba,国产分布式中间件,性能良好,开源 C-JDBC,来自ObjectWeb,开源 …
Cobar Cobar是关系型数据的分布式处理系统,它可以像传统数据库一样提供海量数据服务。 产品在阿里巴巴B2B公司已经稳定运行了3年以上。 目前已经接管了3000+个MySQL数据库的schema,为应用提供数据服务。 据最近统计cobar集群目前平均每天处理近50亿次的SQL执行请求。 http://code.alibabatech.com/wiki/display/cobar/Home
Try it! Cobar 分布式:Cobar的分布式主要是通过将表放入不同的库来实现: 3. 多数情况下,两种方式混合使用 HA:在用户配置了MySQL心跳的情况下,Cobar可以自动向后端连接的MySQL发送心跳,判断MySQL运行状况,一旦运行出现异常,Cobar可以自动切换到备机工作。 Try it! 但需要强调的是: 1. Cobar的主备切换有两种触发方式,一种是用户手动触发,一种是Cobar的心跳语句检测到异常后自动触发。那么,当心跳检测到主机异常,切换到备机,如果主机恢复了,需要用户手动切回主机工作,Cobar不会在主机恢复时自动切换回主机,除非备机的心跳也返回异常。 2. Cobar只检查MySQL主备异常,不关心主备之间的数据同步,因此用户需要在使用Cobar之前在MySQL主备上配置双向同步
数据库技术的发展历程之六: No-SQL数据库系统
大数据时代 大交易数据:来自电商的数据,包括B2B、B2C、C2C、团购等 大交互数据:来自社交网络的数据,SNS、微博等 两类数据的有效融合将是大势所趋,这种融合更能增强企业的商业洞察力
What 20 minutes on Facebook looks like (as of 12/31/10) Shared links: 1,000,000 every 20 minutes Tagged photos: 1,323,000 Event invites sent out: 1,484,000 Wall Posts: 1,587,000 Status updates: 1,851,000 Friend requests accepted: 1,972,000 Photos uploaded: 2,716,000 Comments: 10,208,000 Message: 4,632,000
Features of Big Data Volume海量: 数据量巨大,对TB、PB数据级的处理, 已经成为基本配置。 Variety多样: 处理多样性的数据类型,结构化数据和非结构化数据,能处理Web数据,能处理语音数据甚至是图像、视频数据。 Velocity实时: 在客户每次浏览页面,每次下订单的过程中都存在,都会需要对用户进行实时的推荐,决策已经变得实时
Requirements for Database High performance高并发读写的需求 高并发、实时动态获取和更新数据 Huge Storage 海量数据的高效率存储和访问的需求 类似SNS网站,海量用户信息的高效率实时存储和查询 High Scalability & High Availability 高可扩展性和高可用性的需求 需要拥有快速横向扩展能力、提供7*24小时不间断服务
关系数据库的瓶颈 Huge Storage 海量数据的高效率存储和访问的需求 问题: 解决方案: 存储记录数量有限 SQL查询效率极低 Partition or sharding分库、分表 Vertical Partitioning: Have tables related to a specific feature sit on their own server. May have to rebalance or reshard if tables outgrow server. Range-Based Partitioning: When single table cannot sit on a server, split table onto multiple servers. Split table based on some critical value range. Key or Hash-Based partitioning: Use a key value in a hash and use the resulting value as entry into multiple servers. Directory-Based Partitioning: Have a lookup service that has knowledge of the partitioning scheme . This allows for the adding of servers or changing the partition scheme without changing the application. http://adam.heroku.com/past/2009/7/6/sql_databases_dont_scale
关系数据库的瓶颈 High performance 高并发读写的需求 问题: 解决方案: 数据库读写压力巨大, 硬盘IO无法承受 Master-Slave All writes are written to the master. All reads performed against the replicated slave databases读写分离,缓解写压力,增强读库的可扩展性
关系数据库的瓶颈 High Scalability & High Availability 高可扩展性和高可用性的需求 问题: 解决方案: 横向扩展艰难,无法通过快速增加服务器节点实现, 系统升级和维护造成服务不可用 解决方案: Multi-Master replication E.g. Master -Master Replication Manager for MySQL http://mysql-mmm.org/mysql-mmm.html
关系数据库的瓶颈 Partition or sharding缺点: Not transparent, application needs to be partition-aware Can no longer have relationships/joins across partitions Loss of referential integrity across shards Master-Slave缺点 Critical reads may be incorrect as writes may not have been propagated down Large data sets can pose problems as master needs to duplicate data to slaves Master容易产生单点故障 Multi-Master replication缺点 INSERT only, not UPDATES/DELETES No JOINs, too expensive Consistency is the responsibility of the application
NoSQL Stands for Not Only SQL NoSQL was a term coined by Eric Evans Class of non-relational data storage systems Usually do not require a fixed table schema nor do they use the concept of joins All NoSQL offerings relax one or more of the ACID properties (will talk about the CAP theorem) 一致性(Consistency)当一个写操作完成后,后续的读操作都能够读到更新后的数据。 可用性(Availability)当某些存储节点失效时,客户端发起的读写请求仍然能够获取正确的响应,读写操作仍然有效。 分区容忍性(Partition tolerance) 对于分布式数据库系统,分区容忍性是基本要求 对于大多数web应用,往往牺牲一致性而换取高可用性 Three major papers were the seeds of the NoSQL movement BigTable (Google) Dynamo (Amazon) Gossip protocol (discovery and error detection) Distributed key-value data store Eventual consistency CAP Theorem (discuss in a sec ..)
NoSQL systems
NoSQL分类 类型 部分代表 特点 列存储 Hbase Cassandra Hypertable 按列存储数据。最大的特点是方便存储结构化和半结构化数据,方便做数据压缩,对针对某一列或者某几列的查询有非常大的IO优势。 文档存储 MongoDB CouchDB 文档存储一般用类似json的格式存储,存储的内容是文档型的。这样也就有有机会对某些字段建立索引,实现关系数据库的某些功能。 key-value存储 Tokyo Cabinet / Tyrant Berkeley DB MemcacheDB Redis 可以通过key快速查询到其value。一般来说,存储不管value的格式 图存储 Neo4J FlockDB InfoGrid 图形关系的最佳存储。使用传统关系数据库来解决的话性能低下,而且设计使用不方便。 对象存储 db4o Versant 通过类似面向对象语言的语法操作数据库,通过对象的方式存取数据。 xml数据库 Berkeley DB XML BaseX 高效的存储XML数据,并支持XML的内部查询语法,比如XQuery,Xpath。
Memcached
Memcached Free & open source, high-performance, distributed memory object caching system, generic in nature, but intended for use in speeding up dynamic web applications by alleviating database load. (Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载) Memcached is an in-memory key-value store for small chunks of arbitrary data (strings, objects) from results of database calls, API calls, or page rendering(基于一个存储键/值对的hashmap,它通过在内存中缓存数据和对象来减少读取数据库的次数). Memcached is simple yet powerful. Its simple design promotes quick deployment, ease of development, and solves many problems facing large data caches. Its API is available for most popular languages(易于部署和开发,提供多种语言的API). Try it!
MongoDB
MongoDB MongoDB is a document database that provides high performance, high availability, and easy scalability. Document Database Documents (objects) map nicely to programming language data types. Embedded documents and arrays reduce need for joins. Dynamic schema makes polymorphism easier. High Performance Embedding makes reads and writes fast. Indexes can include keys from embedded documents and arrays. Optional streaming writes (no acknowledgments). High Availability Replicated servers with automatic master failover. Easy Scalability Automatic sharding distributes collection data across machines. Eventually-consistent reads can be distributed over replicated servers.
Try it! MongoDB Data Model A MongoDB deployment hosts a number of databases. A database holds a set of collections. A collection holds a set of documents. A document is a set of key-value pairs. Documents have dynamic schema. Dynamic schema means that documents in the same collection do not need to have the same set of fields or structure, and common fields in a collection’s documents may hold different types of data. DB collection key-value pairs Try it!
8.2.2 共享信息体系结构示例之二: 软件开发环境
软件开发环境 Software development has relied on software tools for almost as long as data processing has relied on on-line databases. (软件的开发需要依赖于一系列工具) Initially these tools only supported the translation from source code to object code, including (最初,这些工具只是支持从源代码到目标代码的转换) Editor (源代码编辑器) Compilers (编译器) Linkers (链接器) Debugger (调试器) Libraries (函数库) …
软件开发环境 Grew to include design record, documentation, analysis, configuration control, incrementality (随着开发技术的发展,CASE工具开始包含分析、设计、调试、测试、文档、配置管理、增量编译等功能) Later, many steps in software development process became sufficiently routine to be partially or wholly automated. (再后来,这些步骤已经能够部分或完全的自动化了)
软件开发环境的发展阶段 Manual translation of one tool’s output to another tool’s input format was common.(阶段1:手工将一个工具的输出为另一个工具的输入) 这实际上是一种“顺序批处理”结构,目前还应用在不少的集成开发环境中 编辑源代码编译链接调试执行 Later, scripts were developed to invoke tools in fixed orders (阶段2:脚本语言用来按照固定顺序调用工具) 阶段3:以数据为中心的体系结构,多个工具共同访问共享的程序信息。——集成开发环境(Integrated Development Environment, IDE)
示例:编译器的体系结构
传统的编译器结构:顺序批处理/管道-过滤器结构 词法分析 语法分析 语义分析 优化 机器代码
传统带符号表的编译器结构 很多信息,在编译过程中可能会被多个阶段的编译程序所使用。例如: 源程序中使用的名字、每个名字的各种属性信息(类型、作用域、分配存储信息等) 将这类信息提取出来,形成共享的符号表(Symbol Table)。
现代的规范编译器结构 随着程序开发语言的发展,源代码中的算法与表示变得越来越复杂,编译过程中的中间结果的表示变得越来越重要。 ——出现了带符号表与语法树(parse tree)的编译器。
仓库形式的编译器结构 rule-based
基于仓库风格的软件研发环境 实例:Eclipse
8.3 黑板系统 Blackboard System
回忆一下 Two major mechanisms in data-centered style: (以数据为中心的SA风格中存在两种交互机制) Database: the types of transactions in an input stream trigger selection of process to execute; (数据库方式:输入流中的事务类型触发需要执行的过程) Blackboard: the current state of the central data structure is the main trigger for selecting processes to execute. (黑板结构:中心数据结构的当前状态触发并选择需要执行的过程)
黑板系统的基本结构 黑板结构:中心数据结构的当前状态触发并选择需要执行的过程
…有这样一类问题 没有直接的算法,多种方法都可能解决问题; 找不到确定的求解策略(先做什么?后做什么?); 问题没有唯一的解答; 每个求解步骤中都可能产生多个可能的解,需要寻求最佳或可接受解。 需要多个领域的专门知识协作解决。 例如: 自然语言处理、语音处理、模式识别、图像处理等
实例:拼图游戏 The Puzzle Metaphor
如何解决此类问题? 一个大问题被分解为若干个子问题; 每个子问题的解决需要不同的问题表达方式和求解模型,分别设计求解程序; 每个求解程序具有某一特定领域的知识,可解决某一方面的问题; 这些程序是相互独立的,之间不存在相互调用,也不存在可事先确定的操作顺序; 根据问题求解过程中的状态来动态决定各个专门程序之间的操作顺序,它们之间通过协同工作共同完成整个问题的求解; 专门的控制程序负责根据问题求解的状态来调用最恰当的求解程序,从而形成一种随机性的执行次序。
控制器:根据当前状态决定知识源的执行次序 …黑板结构正是为此而被提出 控制器:根据当前状态决定知识源的执行次序 知识源:独立的求解程序 黑板:保存求解状态 知识源对黑板的 共享访问
黑板结构的基本构件:黑板 Blackboard: An area of shared memory that contains a problem to be solved (包含待解决问题的共享存储区) problem-solving state data, organized into an application-dependent hierarchy. (解决问题过程中的状态数据,以层次形式组织起来) knowledge sources make changes to the blackboard that lead incrementally to a solution to the problem. (知识源对黑板进行修改,逐渐找到问题的解)
实例:拼图游戏 The Puzzle Metaphor Level 4 将大块装配起来 Level 3 构造边上的大块 构造内部的大块 Level 2 按边拼图 按内部拼图 Level 1 将所有的小块按照方向排列出来
黑板结构的基本构件:知识源 Knowledge sources A collection of software agents or processes that can access and modify the blackboard. (待解决的问题被分为若干个子问题,每个子问题由一个独立的知识源加以计算) Produce separate, independent parcels of application-dependent knowledge. (知识源包含独立的领域知识) Interaction among knowledge sources takes place solely through the blackboard.(多个知识源之间只能通过黑板交换知识——通过对黑板的读写操作来完成交换)
黑板结构的基本构件:控制器 Scans the changes to the blackboard; (时刻监视黑板的状态变化) Evaluate the information on the blackboard; (对黑板上信息的当前状态进行判断和评价) Whenever one of KS’ internal conditions are met, the KS is triggered and posts an updated partial solution based on the state of the blackboard (当黑板的状态满足了知识源的执行条件时,该知识源被控制器触发并进行计算,然后将结果更新到黑板上) These partial solutions cause other KS to update their portions of the solution on the blackboard until eventually an answer is found. (这种更新又导致其他知识源参与计算并更新黑板,直到找到问题解为止)
黑板结构的基本构件:控制器 用来控制和协调所有的知识源,使其协同的解决问题; 了解各个知识源的能力,实时决策解决问题的步骤;
黑板系统的简要结构 输入/解空间 求解状态 黑板 策略知识/ 求解知识 知识源 监视黑板状态 激活知识源 控制器 监视 读取/更新 激活
控制器:根据当前状态决定知识源的执行次序 黑板系统的详细结构 控制器:根据当前状态决定知识源的执行次序 知识源:独立的求解程序 黑板:保存求解状态 知识源对黑板的 共享访问
黑板系统的若干应用 起源于人工智能(Artificial Intelligence, AI)领域; 典型应用领域:自然语言处理、语音处理、模式识别、图像处理等; HEARSAY-II (自然语言处理系统,系统输入时自然语言的语音信号,经过语音音节、词汇、句法和语义分析后,获得用户对数据库的查询请求) HASP/SIAP(在特定海域根据声纳阵列信号探测敌方潜艇出没的系统) CRYALIS(根据X射线探测数据推测蛋白质分子三维结构的系统) TRICERO(在分布环境下监视飞机活动的系统)
Hearsay II Structure 音节分割问题 重音问题 语法问题 语义问题 …
结束 2017年3月20日