# 服务信息存储

agentUniverse使用了一个系统级别的数据库用于存储应用运行时产生的各类信息，如异步服务请求中的运行结果就是存储在该数据库中。

## 系统数据库配置
您可以在`config.toml`文件中配置系统数据库地址：
```toml
[DB]
# A sqlalchemy db uri used for storing various info, for example, service request, generated during application running.
# If it's empty, agentUniverse will create a local sqlite db as default choice.
system_db_uri = ''
```
需注意该uri应当符合`SQLAlchemy`中的uri格式规范。  
当该值为空的时候，会在项目根目录创建一个DB文件夹，并在文件夹中创建一个名为`agent_universe.db`的sqlite DB文件作为默认系统数据库。
如果您希望获取更多关于系统数据库的相关使用方式，您可以参考[SQLDB_WRAPPER](../存储/SQLDB_WRAPPER.md)章节，系统数据库的名字注册为`__system_db__`。

## 服务信息表格式
agentUniverse中使用如下ORM存储请求信息：
```text
class RequestORM(Base):
    """SQLAlchemy ORM Model for RequestDO."""
    __tablename__ = 'request_task'
    id = Column(Integer, primary_key=True, autoincrement=True)
    request_id = Column(String(50), nullable=False)
    query = Column(Text)
    session_id = Column(String(50))
    state = Column(String(20))
    result = Column(JSON)
    steps = Column(JSON)
    additional_args = Column(JSON)
    gmt_create = Column(DateTime, default=datetime.datetime.now)
    gmt_modified = Column(DateTime, default=datetime.datetime.now,
                          onupdate=datetime.datetime.now)
```
其中`id`为自增的主key，`request_id`为每个请求独一无二的ID，`state`表示该请求对应的Agent任务执行状态，`result`为执行结果，`steps`是执行过程的中间产出，`session_id`和`additional_args`在当前版本中为保留字段。