Egg非结构化数据库软件-设计说明书
软件产品说明书

软件产品说明书【篇一:软件产品使用说明书格式】客户商机信息管理系统使用说明书北京阳光伟业科技发展有限公司2010年5月文档控制修改记录* 修改类型分为 a—addedm—modifiedd—deleted审阅人存档目录1概述........................................................................................................ ................................... 4 1.1背景 ....................................................................................................... ............................. 4 1.2应用领域与使用对象 ....................................................................................................... .. 4 1.4参考资料........................................................................................................ ..................... 4 1.5术语与缩写解释 ....................................................................................................... .......... 4 2运行环境 ....................................................................................................... ............................ 5 3.1硬件设备要求 ....................................................................................................... .............. 5 3.2支持软件........................................................................................................ ..................... 5 3.3数据结构........................................................................................................ ..................... 6 4明 ....................................................................................................... .................... 6 4.1安装与初始化 ....................................................................................................... .............. 6 4.2子模块名称1 ......................................................................................................... . (6)4.2.1业务需求描述 ....................................................................................................... ... 6 4.2.2界面截屏以及界面字段解释 .................................................................................. 6 4.2.3操作说明 ....................................................................................................... ........... 6 4.3子模块名称2 ......................................................................................................... . (6)4.3.1业务需求描述 ....................................................................................................... ... 6 4.3.2界面截屏以及界面字段解释 .................................................................................. 7 4.3.3操作说明 ....................................................................................................... ........... 7 4.4出错处理和恢复 ....................................................................................................... . (7)1 概述1.1背景为满足新北海信息科技有限公司内部总经理和总监对部门经理和客户经理的工作信息进行监督和反馈,同时能及时抓住有用的商机客户,避免商机资源的流失。
结构数据管理器:OEBS和PSFT应用包软件版本2019.09发布说明说明书

2019.09Document Release Date:September2019Software Release Date:September2019Legal noticesCopyright notice©Copyright2017-2019 Micro Focus or one of its affiliates.The only warranties for products and services of Micro Focus and its affiliates and licensors(“Micro Focus”) are set forth in the express warranty statements accompanying such products and services.Nothing herein should be construed as constituting an additional warranty.Micro Focus shall not be liable for technical or editorial errors or omissions contained herein.The information contained herein is subject to change without notice.Documentation updatesThe title page of this document contains the following identifying information:l Software Version number,which indicates the software version.l Document Release Date,which changes each time the document is updated.l Software Release Date,which indicates the release date of this version of the software.You can check for more recent versions of a document through the MySupport portal.Many areas of the portal,including the one for documentation,require you to sign in with a Software Passport.If you need a Passport,you can create one when prompted to sign in.Additionally,if you subscribe to the appropriate product support service,you will receive new or updated editions of documentation.Contact your Micro Focus sales representative for details.SupportVisit the MySupport portal to access contact information and details about the products,services,and support that Micro Focus offers.This portal also provides customer self-solve capabilities.It gives you a fast and efficient way to access interactive technical support tools needed to manage your business.As a valued support customer,you can benefit by using the MySupport portal to:l Search for knowledge documents of interestl Access product documentationl View software vulnerability alertsl Enter into discussions with other software customersl Download software patchesl Manage software licenses,downloads,and support contractsl Submit and track service requestsl Contact customer supportl View information about all services that Support offersMany areas of the portal require you to sign in with a Software Passport.If you need a Passport,you can create one when prompted to sign in.To learn about the different access levels the portal uses,see the Access Levels descriptions.ContentsStructured Data Manager for OEBS and PSFT Appspack Release Notes4 Related documentation4 Enhancements5Installation notes6Fixed issues8Structured Data Manager for OEBS and PSFT Appspack Release NotesSoftware version:2019.09Publication date:September2019This document is an overview of the changes made to Structured Data Manager for OEBS and PSFT Appspack(Micro Focus SDM).It contains important information that is not included in books or Help. You can find information about the following in this document.Related documentationThe following documentation available for this product:EnhancementsThe following feature was enhanced for this release:In OEBS11i,the customer data was fetched from RA_CUSTOMER table.Now,in OEBS R12,with the addition of Trading Community Architecture feature by Oracle,all the customers related information are available in HZ_CUSTOMERS table.Installation notesThe installation requirements and instructions for installing the Appspack are documented in the Structured Data Manager Installation Guide for Oracle E-Business Suite and Structured Data Manager Installation Guide for PeopleSoftThe following packages are available for Appspack2019.09:l OEBS AppspackContents:o SDMOEBS_19.09.187.zipo SDMOEBS11i_19.09.187.zipo SDMOEBS12.1.3_19.09.187.zipo SDMOEBS12.2.3_19.09.187.zipo SDMOEBS12.2.4_19.09.187.zipl PSFT AppspackContents:o SDMPSFT_19.09.77.zipo SDMPSFT8_19.09.77.zipo SDMPSFT9_19.09.77.zipo SDMPSFT81_19.09.77.zipo SDMPSFT91_19.09.77.zipo SDMPSFT92_19.09.77.zipFor more information on upgrade from your existing installation,see Structured Data Manager Upgrade Guide,Chapter2.Contact Micro Focus Support to ensure you have all the current hotfixes.Fixed issuesFixed issuesThe following issues were fixed in this release:[ADM-9105]:Order Management refers to incorrect table to access customer information.[ADM-9561]:EBSIntegrationCreateArchiveAccess encountered an error atMangedTableTextMods.。
EGG库使用环境配置图示

在不同编译器下使用Egg库
一、VC6绿色版本:
1、在工程配置中增加egg.lib,msimg32.lib
2、在程序文件中添加egg.h
二、Dev C++:
1、后缀用cpp
2、工程——》工程属性——参数-》连接器中添加(如下图所示)
-legg
-lgdi32
-lmsimg32
其中需要把libegg.a文件拷贝到工程路径下。
另外在工程属性——》文件目录中添加两个路径,一个是DEV C安装路径下的lib路径(如C:\Program Files\DEV-CPP\Lib),一个是libegg.a所在的工程路径(如下图所示)
以上配置编译不会报错,也可以不用libegg.a,直接在连接器中添加egg.lib,编译会报错但是可执行。
三、Cfree5
1、后缀用cpp
2、在工程设置——连接中,添加egg、gdi32、msimg32,注意不要加后缀lib
3、在工程设置——路径中,库路径(Library Files)下添加一下当前工程路径(egg.lib一般放在工程路径下)。
软件设计规格说明书

软件设计规格说明书1 引言1.1 编写目的提示:说明软件服务对象或目标用户。
如:服务于XX公司网络化运营,管理销售中的各个环节,最终用户为XX公司销售部门,销售办事处和公司相关领导等。
1.2 范围提示:说明待开发的软件系统的名称;列出本项目的任务提出者、开发者、用户以及将运行该项软件的单位。
1.3 定义提示:列出本文件中用到的专门术语的定义和缩写词的原词组。
1.4 参考资料提示:列出要用到的参考资料,如:本项目的经核准的计划任务书或合同、上级部门的批文等;属于本项目的其他已发表的文件;本文件中各处引用的文件、资料,包括所要用到的软件开发标准。
列出这些文件的标题、文件编号、发表日期和出版单位,说明能够得到这些文件资料的来源。
2 总体设计2.1 需求规定提示:说明对本系统的主要的输入输出项目、处理的功能性能要求,详细的说明可参见《软件需求说明书》。
2.2 运行环境提示:简要地说明对本系统的运行环境(包括硬件环境和支持环境)的规定,详细说明参见《软件需求说明书》。
2.3 基本设计概念和处理流程提示:说明本系统的基本设计概念和处理流程,尽量使用图表的形式。
2.4 结构提示:用一览表及框图的形式说明本系统的系统元素(各层模块、子程序、公用程序等)的划分,扼要说明每个系统元素的标识符和功能,分层次地给出各元素之间的控制与被控制关系。
通过变换映射(如基于DFD或基于IDEF0 的结构设计),并采用适当的优化准则进行软件结构的优化。
该过程可在本节中分段落进行描述。
已得到优化的软件体系结构用结构图(Structure Chart)进行描述。
描述的内容包括:软件程序结构图:画出软件体系结构的树状层次。
模块命名规则:给出软件模块的命名规则,保证模块名称在项目内的唯一性和无二义性。
模块描述:可用IPO图结合下表对每一软件模块进行描述2.5 功能需求与程序的关系提示:本条用一张如下的矩阵图说明各项功能需求的实现同各块程序的分配关系:2.6 人工处理过程提示:说明在本软件系统的工作过程中不得不包含的人工处理过程(如果有的话)。
软件概要设计说明书

软件概要设计说明书1.引言本软件概要设计说明书是为了介绍软件的整体架构和功能设计,以便于开发团队和项目相关人员了解软件的大体情况和设计思路。
2.软件概述本软件是一款用于管理个人日常事务和安排的日程管理软件,主要功能包括日程安排、提醒通知、任务管理、备忘录等,旨在帮助用户提高工作效率和时间管理能力。
3.总体设计3.1 软件架构本软件采用前后端分离的架构设计,前端使用React进行界面设计,后端使用Node.js进行逻辑处理和数据存储,数据库采用MySQL进行数据存储。
3.2 功能模块软件主要分为日程管理模块、提醒通知模块、任务管理模块、备忘录模块等。
用户可以根据自己的需要进行添加、编辑和删除,同时可以设置提醒通知和优先级等。
4.详细设计4.1 日程管理模块用户可以添加、编辑和删除日程安排,可设置开始时间和结束时间,以及重复周期、地点、标签等信息。
4.2 提醒通知模块用户可以设置提醒通知的方式和时间,提醒内容可以自定义,并可设置提前时间,确保用户不会错过重要事务。
4.3 任务管理模块用户可以添加、编辑和删除任务,设置任务的优先级、状态、截止时间等信息,以便及时了解任务进度。
4.4 备忘录模块用户可以添加、编辑和删除备忘录,对于重要的备忘事项可以设置提醒通知,保证不会遗漏。
5.接口设计本软件提供RESTful风格的API接口,包括用户管理、日程管理、任务管理、提醒通知、备忘录等相关功能。
6.安全设计本软件将采用JWT认证和HTTPS加密等机制,保证用户数据的安全性和隐私保护。
7.性能设计本软件将采用分布式架构和缓存机制,以提高系统的性能和稳定性。
8.测试与验收在开发过程中,将进行单元测试、集成测试和系统测试,确保软件的质量和稳定性。
安排验收测试,确保用户需求的满足。
以上是本软件的概要设计说明书内容,希望可以对各位有所帮助。
9. 部署与维护在软件开发完成后,需要进行系统部署并进行相关维护工作。
部署方面,需要根据实际情况选择合适的云服务器或者物理服务器进行部署,配置相关环境和数据库,并进行性能测试,确保系统正常运行。
软件设计说明书(5篇范例)

软件设计说明书(5篇范例)第一篇:软件设计说明书设计说明书引言水利方向一直是国家十分重视且投入巨大的方向,它关乎方方面面。
百姓生命安全、水资源的利用、农业的灌溉等等,都与其息息相关,但是,正因为它的无处不在,导致如果使用传统的手段,将需要消耗过多的人力,效率极其低下,甚至是不可完成的,所以,水利也需要更加现代化的手段去完成预期的目标,水利自动化就是为了这一目的而提出来的。
水利自动化可以大大提高数据测量的准确度和控制的可靠性,提高效率,降低劳动强度,充分利用现有设备,从而对于当地水利单位和水利公司均能带来可观的经济和社会收益。
1.1 编写目的a.编写本说明书的目的在于阐明用户的要求的,描述出系统的需求模型、功能和性能要求以及其他约定,为后期的软件设计等工作提供依据。
b.本说明书的预期读者为用户、系统设计员及其他开发人员和相关审核检测人员。
1.2 背景本项目的任务提出者及开发者是北京恒宇伟业科技发展有限公司生产部开发小组:项目负责人:硬件设计工程师:系统分析员:系统设计员:编码员:软件测试员:用户为各地方招标业主单位,该软件在WINDOW7系统下,在IAR FOR MSP430环境下完成开发,1.3 定义RTU:远程终端单元。
水文监测系统:是指用于对各类水文要素实施采集、传输、处理的总体。
1.4 参考资料水文检测数据通信规约(SL651-2014)2 设计总体2.1 需求规定本软件系统的各种用户是唯一的参与者,参与者通过使用事件与系统进行交互,所有的使用事件综合起来即构成了用户的功能需求。
本系统通过用户操作键盘操作及显示屏显示交互设定相关系统、通讯、传感器参数,查看历史数据和系统运行状态。
2.2运行环境本软件属于工业级产品设备运行系统,运行在基于MSP430F5438A CPU芯片的自助设计的电路板上。
部分操作依托于外部传感器设备。
2.3 基本设计概念和处理流程2.4 结构初始化函数流程图Main函数流程图数据发送流程图水位数据采集流程图雨量数据采集流程图数据处理模块流程图输入数据处理模块2.5 功能需求与程序的关系主程序函数main();系统滴答初始化Init_CLK();GPIO口相关映射初始化Init_Port();;UART口相关初始化Init_RSUART();键盘相关初始化Init_Keypad();菜单链表初始化Init_Menu();系统时钟读取RX8025_R();本地网络修复模块NetFix();输入数据处理模块IO_ReportDeal();菜单模块Menu_Ctrl();雨量数据处理模块Msg_RainDDeal();水位数据处理模块Msg_WaterDeal();报文拼组模块Msg_PostDeal();数据发送模块NT_SendMsg();系统参数变更存储模块SysParSave();2.6 人工处理过程用户通过键盘及显示屏,依靠系统菜单,对相关内容进行设置,以达到按照具体需求运行程序获得预期效果的结果。
软件概要设计说明书范例

软件概要设计说明书范例XX概要设计说明书拟制日期:某某某日期审核日期:批准日期:文档修改记录:修改日期。
版本/状态。
修改章节。
修改描述2017-10-17.初版发布填写说明:1.系统结构的定义本体系对整个软件系统按如下结构方式进行划分:系统 -。
子系统 -。
模块/子模块其中:1)系统层次在本说明书中予以描述。
2)子系统层次在系统设计说明书中予以描述。
3)模块/子模块层次划分属于详细设计,在详细设计说明书中予以描述。
如果系统相对简单,可以省略“子系统”这一层次。
2.如果填写了系统设计说明书,则在本说明书中略过“系统划分”的相关内容(即第2章)。
3.如果系统相对简单,不需要做“系统子系统”划分,这种情况下,取消填写系统设计说明书,只须填写本说明书,直接套用“系统模块”划分(即第3章)进行“系统模块”划分(把其中“子系统”一词替换为“系统”),并删除本说明书中“系统子系统”划分的相关内容(第2章)。
目录:1.简介1.1 背景和目的1.2 范围1.3 术语和缩略语2.系统总体设计2.1 任务概述2.2 目标2.3 需求概述2.4 设计概述2.5 总体约束1.简介1.1 背景和目的本文档的目的是说明软件系统的设计考虑,包括基本处理流程、组织结构、模块划分、功能分配、接口设计、运行设计、数据结构设计和出错处理设计等,为软件的详细设计奠定基础。
1.2 范围本文档适用于消息推送项目二期产品的服务端。
1.3 术语和缩略语缩略语英文全名中文解释XMPP XXX 可扩展通讯和表示协议2.系统总体设计本章节省略。
3.功能需求的实现方案本节描述了系统的功能需求及其实现方案。
详细内容请参见《消息推送系统需求规格说明书》。
4.非功能性需求的实现方案本节描述了系统的非功能性需求及其实现方案。
4.1 性能的考虑系统应能够支持每秒钟至少处理1000个并发请求。
4.2 兼容性的考虑系统应当兼容主流的操作系统和浏览器。
4.3 安全的考虑系统应当具有用户认证、权限控制、数据加密等安全机制。
软件设计说明书

软件设计说明书文件管理序列号:[K8UY-K9IO69-O6M243-OL889-F88688]软件设计说明书1.引言1.1编写目的本软件设计说明书主要针对需求分析描述了设计的各个模块。
本文档是为了让客户了解开发者所开发的软件功能是否满足了客户的预想的功能,以及各功能模块之间是否存在与客户之间相违背的地方。
如果关于该软件有什么需要改进的地方请客户及时提出,以方便开发人员更好的、更全面的开发该软件。
该说明书也将作为开发者前期开发的重要依据。
开发人员希望通过该说明书能够让开发者和用户更好的沟通,并作为后期软件交付时软件是否符合用户标准的一个重要参考。
1.2命名规范数据库表名用小写开头的英文命名,字段名用大写开头的英文命名。
私有变量以“_”开头的小写英文字母命名,其他变量用小写英文字母开头。
所用函数用小写英文字母开头。
所有类用大写英文字母开头。
1.3参考资料[1]吕云翔,王昕鹏,邱玉龙.软件工程——理论与实践.北京:人民邮电出版社,2012.[2]吕云翔,刘浩,王昕鹏,周建.软件工程课程设计.北京:机械工业出版社,2009.[3]“小型二手货交易平台”需求规格说明书1.4相关文档“小型二手货交易平台”需求规格说明书1.5版本更新记录版本号创建者创建日期维护者维护日期维护纪要温鑫V1.0温鑫2013-5-182.总体设计2.1需求规定本系统利用Web平台,通过注册在本系统上发布供应或需求信息。
买家可以与卖家进行在线沟通,因此可以进行目的性强的交易,提高交易效率和质量。
详细需求说明可参见《“小型二手货交易平台”需求规格说明书》。
2.2硬件运行环境(1)服务器处理器型号:AMD或Intel2.0GHz以上内存容量:1GB以上网络配置:100M网卡(2)Web浏览PC机处理器型号:AMD或Intel1.6GHz以上内存要求:256MB以上网络配置:100M网卡2.3软件运行环境(1)服务器操作系统:Windows7或WindowsServer2008及以上版本系统。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
产品概述产品介绍Egg是一个高性能、可扩展、并支持分布式存贮的非结构化数据库,同时也具备了部分非关系型数据库具备的结构化查询功能。
该类型的数据库被广泛应用于搜索引擎、海量信息检索系统、音频视频管理系统等领域,成为这些领域中必不可少的一个组成部分。
Egg是一个完全由C编写的,成熟的软件,并且是埃帕Cooling搜索引擎软件、Cooling云桌面平台软件、Cooling云输入法的重要组成部分,已经运用到了互联网、信息检索、数据挖掘、虚拟化等多个领域中。
行业背景随着互联网的不断发展,搜索、云计算、WEB 2.0等全新的应用模式不断涌现出来。
这些新应用都有着一些非常显著的特点,如:信息量巨大、信息结构化程度低、信息更新频度高、信息增长幅度大,并发访问频繁等。
传统的关系型数据库,虽然能够胜任企业级别的信息管理,但在处理互联网级别的应用时,往往无法满足于以上的特点,暴露出了很多问题。
海量数据的高效存贮与访问要求海量数据应用中最早,最典型的应用是搜索引擎;最有发展的是云计算;最流行的是WEB2.0中的SNS社区。
据CNNIC统计,截止2009年底,仅中国的网页数量就达到了336亿,较之2008年底,增长幅度接近100%。
搜索引擎不光要存贮这些网页的基本信息,同时又要解决平均每天几千万网页的增长量。
云计算、需要将原先用户端的应用、服务、数据移到服务端,利用服务端的计算、存贮、带宽、管理优势,提供相比传统桌面应用更有竞争力的服务方式。
WEB 2.0中最主流的SNS社区,每天都要产生大量的用户动态信息,以Facebook为例,每月用户动态记录就达到2.5亿条;另如一些Web 门户,都已经达到上亿帐户数量。
所有的此类应用中的存贮要求,都已经超过了关系型数据库可以容纳的范围。
Google是最早采用了廉价硬件(Commodity Hardware)建立分布式存贮的互联网公司;Amazon则在云计算平台中,采用了Yahoo与apache合作开发的分布式文件系统Hadoop;Facebook则为业界贡献了Cassandra,这一分布式的非关系型数据库。
高可用与可扩展性的要求关系型数据库具备一定的高可用性与可扩展性,但这是建立在企业级可预测数据的前提之下的。
而对互联网应用来说,没有任何人能预测下一年新增的网页数量、云计算平台的使用人数以及社区将拥有的用户数。
唯一可以肯定的就是,所有这些数据都会以一个相当快的速度增长。
当一种存贮方式,无法满足面对应用的增长而动态扩展,将对互联网业务的发展,产生严重的负面影响。
此外,互联网应用要求所有系统都要能够全天侯提供服务,即便系统升级、增加设备、出现故障。
而传统关系型数据库的扩展、维护都需要停止数据库实例,而无法实现实时维护,这也导致了传统的存贮方式,无法满足目前互联网发展的需求。
高并发访问的要求搜索引擎、云计算、WEB 2.0每天都要面对大量的用户访问。
2010年,Google与Facebook的访问量,占据了全美访问量的14%。
在如此大的并发下,存贮或数据库的负载将非常之高,将达到每秒上万次读写请求。
在如此大的读写压力之下,既便使用了Raid之类的技术,硬盘IO也已经无法承受,或是在有限的时间内完成读写操作。
非结构数据存贮的要求关系型数据库从设计准则上来看,是对具备明确结构信息的数据进行管理。
但目前、无论是在互联网应用,或是企业应用中,非结构化数据(网页、Office文档、文本、PDF、甚至音视频)都占据了总信息量的85%以上。
这些数据虽然能用关系型数据库进行存贮,但却无法进行有效的检索。
因为为些数据种类繁多,且都无法用结构化的方案(Schema)来描述。
在以上四个要求前,关系型数据库显得无能为力,但这并不是说关系型数据库就是一个失败的产品。
只能说,关系型数据库不适合不断扩展的海量数据应用。
关系型数据库本身具备强大的事务完整性控制实时读写能力结构化查询能力但是这些功能,在很多应用中并非必要、或者说可以通过其它的方式代替。
对于事务完整性,很多互联网应用都是强调用户交互性,操作往往很简单,或者说在设计之初,就尽可能的避免会造成复杂事务的设计。
而实时读写、搜索引擎虽然不断抓取数据,但供用户访问的索引,往往一天才更新一次,但这样的频度对用户来说已经足够。
结构化查询能力,最典型的特点是能够支持多表的关联操作,但实际上在设计超大规模系统的时候,即便使用关系型数据库,设计师也知道单表的设计虽然在结构上不优美,但确能提供最高的效率。
目前开始流行的非结构化、非关系型数据库的发展方向,就在于解决前4个需求,同时弱化并非主要的关系型数据的3个特点。
产品方案总体架构Egg从结构上可以分布两层,上层为数据存贮层,下层为分布式文件系统。
ClientIndexCacheSearchCacheIndex.MapId.MapPos.MapField.MapDoc.MapAnalysisSimilarityMaster NodeRack1Slave NodeBlockBlockBlockBlock Slave NodeBlockBlockBlockBlockRack1 Slave NodeBlockBlockBlockBlockSlave NodeBlockBlockBlockBlock数据存贮层Egg存储主要分为三层,分别是Cache缓存层,Mapping映射层以及文件存储层。
Cache缓存层Cache缓存层,是一个基于HashTable访问存储层。
每一块缓存数据都由一个关键字符串key标识,并可通过此关键字符串key访问到相对应的缓存数据。
它主要有两个特点:一、在索引过程中,可以减少系统I/O写频次,单元数据也便于集中存储入文件中;此外,对于多进程写数据,可以统一录入,减少文件锁频繁操作;为了避免过多使用系统内存,Cache缓存层可设置内存占用的上限。
二、在反向索引过程中,可以减少系统I/O读频次。
SearchCache中有个叫缓存命中的机制,提高检索效率,减缓系统I/O压力。
Mapping映射层Mapping映射层,是一个基于文件映射的存储层,与磁盘中的文件形成一对一的联系。
这一层中包含了:索引区(Index.Map)、文章区(Doc.Map)、字段区(Field.Map)、位信息区(Pos.Map)、ID区(Id.Map),它们分别对应着五个文件。
文件映射采取的是块读写,并对文件区域进行“格式化”划分,便于快速映射定位以及校验非法操作。
分词器接口Egg对外提供分词器的统一接口,无论是空格分词器、英文分词器,还是中文分词器,甚至更复杂的分词器,都可以为Egg挂载调用。
为了更为有效的存储入文件,Egg分词接口要求序列化分词结果,各个分词器应遵循接口规则,实现序列化方法。
相关度评分策略若检索是索引的反向操作,那么相关度评分则是分词的反向操作。
在分词过程中,记录每个被分词器划分出来的关键字的位置信息,关键字之间位置近远和耦合度直接影响到相关度评分。
若想获得较为精确的相关度分数,势必要将所有的位置信息一个不差的存储入文件中,这对文件的空间访问压力会很大;相反的,若想节省文件存储空间,相关度分数不能较为准确的反映用户所需要的查询结果。
Egg除了采用可变长整形类型VInt(VInt类型在文件存储上可以比Int类型至少减少3-4倍的空间),还有自己的评分策略。
从实际角度出发,通常某篇文章它的重点和概括性的语句都会出现在文章的前部,那么Egg分词器针对这个特点只需要记录中文章前部重要的信息。
换而言之,Egg不会记录全部的位置信息数据,但记录的数据肯定是最重要最有价值的。
此外,Egg通过用户查询数据的不断积累,形成了一套用户查询频次较多的关键字列表,在分词过程中针对频次较多的关键字,获得的不单单只是文章前部的信息,甚至是整篇大文章的信息,这样更利于评分的准确度,便于更好的反映查询结果。
索引方式策略Egg索引采用的是B-Tree结构,并且支持变长关键字符串读写访问。
B-Tree相对于其他存储结构的优势在于快速有效检索以及实时数据更新,它并不像HashTable每次数据新增或者更新需要重新建表。
索引树上的每个结点都是固定大小(32Bytes),用于存储关键字。
若访问的关键字超出了结点大小,此关键字被存放在其他数据块中而不是树结点上,而树结点中存放是此关键字的偏移地址。
基于数据采样的特性和实际情况,树结点的固定大小是可以设置变化的。
例如:关键字都是单字或者英文单词,那么固定大小可以设置偏小一点。
文件数据块存储策略Egg在文件中存放数据时,会事先扩展比被存储的数据大小更大的容量。
一般来说,Egg会将文件扩大32M-64M。
这样做完全是为了能让Mapping映射操作更为快速有效,因为频繁的文件I/O读写是Mapping不利的。
一次性扩大大空间也会减缓I/O访问的频繁度。
为了便于维护管理,Egg对此扩展空间进行“格式化”,类似于malloc/free内存管理和资源回收。
“格式化”中记录已用空间、未使用空间。
每次有新数据要录入时,空间会检查剩余空间是否满足新数据的要求,若空间不足则会请求文件扩展磁盘空间。
Egg的分布式文件系统Egg的分布式文件系统,称为Cooling File System(简称CFS)是一个典型的Master/Slave架构。
CFS系统的集群,包含一台主节点(Master Node)与多个子节点(Slave Node)。
主节点负责管理整个文件系统中的所有子节点,并提供对客户端提供文件读写的服务。
所有的子节点都管理一片独立的存贮空间,实现最终的读写操作。
CFS在存贮一个文件时,会将文件分成若干固定大小的块,这些块将被分配到不同的子节点,由子节点来最终保存这些块。
主节点记录存贮在文件系统中的文件,并为每一个文件块分配一个唯一的id号做为标识。
子节点接受主节点发来的命令,实现对文件块的读、写、复制等操作。
CFS主节点对客户端来说,就象是一个文件系统,并通过类似POSIX IO的API去管理这些数据。
支持的操作有:open, close, read, write, pread, pwrite, seek, rename, remove。
CFS是一套独立的软件,使用GNU GCC编译器编译,遵循POSIX规范,能够运行于各类Linux操作系统之上,具备良好的迁移性。
文件系统结构CFS在Egg中的目的,主要是为了服务于上层的存贮结构,因此CFS 中存贮的文件都会非常巨大,至少是G级别,同时不会有非常复杂的目录层次要求。
因此CFS中只有文件,而没有目录的概念,同时也不支持链接。
在将来的Roadmap中,这些功能也不会被加入进来。
主节点维护整个文件系统,所有的文件操作,以及基本配置信息都位于主节点上。