Size: 5026
Comment:
|
Size: 4356
Comment:
|
Deletions are marked like this. | Additions are marked like this. |
Line 127: | Line 127: |
MoinMoin 链接: 附件 |contribute_docs| .. |contribute_docs| image:: 1.0/RoughDocs/contribute_docs.jpg 脚注 [#]_ - `page with a ReStructuredText primer <HelpOnParsers/ReStructuredText/RstPrimer>`_ - `use of ReST in MoinMoin <HelpOnParsers/ReStructuredText>`_. 外部链接: - `Docutils-Users mailing list`_ - `Docutils project web site`_ .. [#] If that relative link doesn't work, try the master document: http://docutils.sourceforge.net/docs/ref/rst/restructuredtext.html. .. _Docutils-Users mailing list: http://lists.sourceforge.net/lists/listinfo/docutils-users .. _Docutils project web site: http://docutils.sourceforge.net/ |
:status: 草稿 ;LX;完成度75%; .. contents:: :local: - `PyCon2010亚洲 <PyCon2010>`_ 概述 ====== Socrates 是一个基于关系型数据库和ORM的通用数据库工具。它通过三元语义表达了对动态数据结构的存储和管理功能。使得开发人员可以在关系数据库中管理结构可变的 数据。三元语义可以方便的表达单一信息之间的关系,因此它很适合用来表达有向图,甚至有向有环的网状模型,或路径长度很长的关系。 * 预计时长:25分钟 * 难度 Level :面向中级听众 * 类别 Categories:数据库 databases 参考: PyCon2010亚洲 Socratse ========= 项目背景 Background on project --------------------------------------- * 需要建立一个数据库,支持多个统计报表输出,每个报表都是临时性的,数据量不大,但是报表的格式和内容变化很大 * 需要支持当前不能预期的数据内容 * 需要支持一些网状关系模型,节点间的关系变更频繁,经常需要沿节点间的路径进行访问 * 游戏中的人物、道具等信息,展开为关系表会非常庞大,但是往往只有一部分字段有信息,此类稀疏数据结构用关系数据库表达比较浪费 需要解决的问题 Problems to solve ------------------------------------ * 数据表的业务信息有内在的一致性,为每种变化建立一个新的数据表不经济 * 频繁变化结构的数据,每次调整表结构不现实 * 关系数据库的模型适合表示大量同类数据的关系,但表达深度的递归关系,如树状结构,是比较难操作的 * 一些应用,如游戏中的人物、道具等信息,展开为关系表会非常庞大,但是往往只有一部分字段有信息,此类稀疏数据结构用关系数据库表达比较浪费 项目介绍 What's socrates? ------------------------------------ * Socrates 基于三元语义模型,可以方便的表达动态的数据结构和关系 * 模型分为两个层次:条目和子句 * 每个子句是一个(主语,谓语,宾语)三元结构 * 每个主语表示一个条目,每一到多个同一主语的子句描述一个完整的条目 * 谓语表示主语拥有的特征 * 宾语表示主语在当前谓语下表达的信息内容 * 每个条目可以看成一个类字典的结构 * 谓语是可读的文本,它的命名是其唯一标识特性 * 宾语可以使用数据库平台所支持的任意数据类型 * Socrates封装关系数据库的静态强类型本质,在使用接口上表现为动态数据模型 * 访问层上,Socrates基于Python的ORM工具SQLAlchemy,可以使用SQLAlchemy的强大功能进行操作 * Socrates 在数据库层表现为一个统一序列器,若干个存储表,十个元语命令的数据行,存储表可以由用户动态添加 动机 Why socrates? ------------------------ * 小粒度数据,可以方便的对单一属性精确的访问 * 支持对数据进行类似字典操作的访问 * 每一个数据条目就是一个类似字典的结构,可以独立的增删数据,不影响其它条目 * 条目之间可以通过子句方便的建立关系 * 支持多种不同数据库,允许使用具体平台的特定数据类型 简单的演示 Basic recurrence ---------------------------------- * 在不同数据库平台上“On Command”建立一个Socrates环境 * 注册新类型、新谓语 * 添加条目,建立关系 进一步的演示 More sophisticated recurrence ------------------------------------------- * 查询子句和条目 * 沿条目关系进行访问 * 访问和操作条目中的子句 * 谓词表达式 Other capabilities of socrates ------------------------------ * 性能讨论 * 并发和分布 * 异构数据库的多节点集群 结尾 ---------- * Socrates 提供了灵活的数据管理方式,为动态和复杂数据的管理提供了一种通用的方式 * Socrates 在DSL和分布式集群方面还可以有所发展 * Socrates 的性能还有很大的提升空间 .. macro:: -- ZoomQuiet [<<DateTime(2010-01-11T10:44:45+0800)>>]