2010年1月9日星期六

为 PyCon Asia Pacific 2010 准备的——基于三元语义的关系数据库建模工具Socrates

基于三元语义的关系数据库动态建模工具Socrates

Socrates, Relational Database Dynamic Models Make Tools

摘要 Summary

Socrates 是一个基于关系型数据库和ORM的通用数据库工具。它通过三元语义表达了对动态数据结构的存储和管理功能。使得开发人员可以在关系数据库中管理结构可变的 数据。三元语义可以方便的表达单一信息之间的关系,因此它很适合用来表达有向图,甚至有向有环的网状模型,或路径长度很长的关系。

  • 预计时长:25分钟
  • 难度 Level :面向中级听众
  • 类别 Categories:数据库 databases

详细内容 Description

Outline
=======

.. contents:: :local:

项目背景 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 的性能还有很大的提升空间

1 条评论:

est 说...

都三元语义了直接上datalog好了

囧。。。