【问题标题】:Database Engine Design数据库引擎设计
【发布时间】:2012-11-20 15:42:05
【问题描述】:

我的任务是设计一个数据库引擎。我根本不需要实现代码,只需要设计(伪代码、序列图等)。我已经获得了这些方法,并且正在寻找任何帮助以进一步了解我在做什么。以下是我到目前为止所得到的,非常感谢任何帮助。这是一项家庭作业,不是在寻找任何答案,只是想更深入地了解如何更好地理解设计这个软件。

数据库方法:

静态 void createDB(String dbName):
在磁盘上创建一个新文件夹(即:存储为 c:/dbName) 该文件夹将是数据库的根目录;里面将包含表和索引>(文件)

static void deleteDB(String dbName):
for(磁盘文件夹中的文件夹名称 (c:/) ) 如果(文件夹名称 == 数据库名称) 从磁盘中删除

静态数据库 openDB(String dbName)

void closeDB()

表创建表(字符串表名,长记录大小):
在数据库文件夹 tableName 中创建新文件 在存储记录大小的文件中创建一个标题 这个文件是一个字节数组,记录大小会告诉我存储在>这个表中的对象有多大。 (即:如果文件总共有 105 个字节。我知道我的标题是 5 个字节,所以标题(15、25、35 ...)之后的每 >10 个字节都是我表中的一个对象

Table getTable(String tableName)
在数据库文件夹中,遍历每个文件 如果(文件名 == 表名) 返回表(文件)

void deleteTable(String tableName)
在数据库文件夹中,遍历每个文件 如果(文件名 == 表名) 删除表(文件)

索引创建索引(字符串索引名称)

Index getIndex(String indexName)

void deleteIndex(String indexName)

表格方法:

长 getRecordSize()
表是一个文件(字节[]) 文件的第一行 (byte[0]) 是包含 recordSize 的标头 返回记录大小

long addRecord(byte[] 记录)
在表文件的标题中获取文件中的记录大小和对象数 将记录写入文件中的位置 (spot = (# of objects already in file * record size) >+ header size. (i.e: if header size = 5 bytes, record size = 10 bytes and I have 7 objects in >文件已经......下一个对象将添加到位置 (7 * 10) + 5 = 75 )

void removeRecord(long primaryKey)

byte[] getRecord(long primaryKey)

void updateRecord(long primaryKey, byte[] 记录)

无效关闭()

索引方法:

Void addKey(String key, long value)

IteratorgetValues(String startKey, String endKey)

long deleteKey(字符串键)

void updateKey(字符串键,长值)

无效关闭()

【问题讨论】:

    标签: database database-design sequence-diagram


    【解决方案1】:

    首先你必须明白这些方法是外部接口。您可能会在幕后做更多的事情(在它们自己的线程中生成长期或短期的对象,拥有实用程序库等等)。

    首先以类图或其他方式对您拥有的东西进行建模。然后尝试了解接口将如何使用(也许通过编写一些详细的用例?)。我发现CRC cards 在这一步非常有用,因为它们可以轻松移动内容、一次查看单个类等等。

    当您了解系统后,请尝试找出您需要的后端功能和功能,然后用新的类扩展您的类图,直到您涵盖所有内容。

    从序列图开始时,请准备好进行更改。在剩下的工作中,您很可能会发现初始模型存在的问题,解决这些问题通常比试图解决/忽略它们更有用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-08
      • 1970-01-01
      • 2012-12-30
      • 1970-01-01
      • 1970-01-01
      • 2023-03-26
      相关资源
      最近更新 更多