什么时候sqlite的清单输入有用吗?

时间:2009-05-20 21:55:12

标签: sql sqlite static-typing dynamic-typing

sqlite使用作者称之为“Manifest Typing”的内容,这基本上意味着动态类型化sqlite:如果需要,可以将varchar值存储在“int”列中。

这是一个有趣的设计决定,但每当我使用sqlite时,我就像标准的RDMS一样使用它,并将这些类型视为静态。实际上,在其他系统中设计数据库时,我甚至都不希望动态类型列。

那么,此功能何时有用?有没有人在实践中找到了一个很好用的东西,用静态类型的列不能轻易完成?

2 个答案:

答案 0 :(得分:5)

它真的只是让类型更容易使用。您不必担心这个字段在数据库级别需要多大,或者您的整数可以有多少个。或多或少是'为什么不呢?'事情。

另一方面,SQL Server中的静态类型允许系统更好地搜索和索引,在某些情况下更好,但是对于所有应用程序的一半,我怀疑数据库性能改进是否重要,或者它们的性能是否“差” '由于其他原因(每个选择创建临时表,指数选择等)。

我一直使用SqLite将我的.NET项目作为客户端缓存,因为它太容易使用了。现在,如果他们只能使用与SQL服务器相同的GUID,那么我将是一个快乐的露营者。

答案 1 :(得分:4)

动态类型对于存储配置设置等内容非常有用。以Windows注册表为例。每个键都很像一个表格的SQLite表:

CREATE TABLE设置(名称TEXT PRIMARY KEY,Value);

其中Value可以是NULL(REG_NONE)或INTEGER(REG_DWORD / REG_QWORD),TEXT(REG_SZ)或BLOB(REG_BINARY)。

另外,我必须同意Jasons关于不强制执行字符串最大大小的有用性。因为大部分时间,这些限制都是纯粹的仲裁,你可以指望有一天找到一个需要存储在VARCHAR(30)中的32字节字符串。