Database DBM数据库的理想字符串长度?
当使用DBM数据库(例如Berkeley或GDBM)时,使用更少的长字符串还是更多的短字符串来存储数据更好?无论哪种方式,我都可以轻松构建数据结构。我在寻找性能上的“更好”,但我对其他含义也感兴趣。我认为这个问题很难用一种完全通用的方式来回答。这里有太多的变量,所以您确实需要测试一些常见的场景,以确定最适合您的答案 需要考虑的一些因素:Database DBM数据库的理想字符串长度?,database,berkeley-db,dbm,gdbm,Database,Berkeley Db,Dbm,Gdbm,当使用DBM数据库(例如Berkeley或GDBM)时,使用更少的长字符串还是更多的短字符串来存储数据更好?无论哪种方式,我都可以轻松构建数据结构。我在寻找性能上的“更好”,但我对其他含义也感兴趣。我认为这个问题很难用一种完全通用的方式来回答。这里有太多的变量,所以您确实需要测试一些常见的场景,以确定最适合您的答案 需要考虑的一些因素: 较大的字符串是否需要子字符串搜索 您将对数据执行何种搜索 最后,通常最好采用产生最规范化模式的方法。优化可以从那里开始,根据您的数据库,可能有比纯粹为了性能
- 较大的字符串是否需要子字符串搜索
- 您将对数据执行何种搜索
最后,通常最好采用产生最规范化模式的方法。优化可以从那里开始,根据您的数据库,可能有比纯粹为了性能而重新构造基础架构更好的替代方案。我认为这个问题很难用完全通用的方式来回答。这里有太多的变量,所以您确实需要测试一些常见的场景,以确定最适合您的答案 需要考虑的一些因素:
- 较大的字符串是否需要子字符串搜索
- 您将对数据执行何种搜索
最后,通常最好采用产生最规范化模式的方法。优化可以从这里开始,根据您的数据库,可能有比纯粹为了性能而重新构造基础架构更好的替代方案。如果您要经常搜索或修改数据,则更多的短字符串将提供更好的性能
即,你不想搜索这些长字符串中的一个子串,或者经常修改字符串中间的某个值。
< P>如果你经常搜索或修改数据,更多的短字符串将提供更好的性能。即,您不希望搜索这些长字符串中的一个子串,或者经常修改字符串中间的某个值。
<伯克利DB,或任何其他DBM实现,将为每个键/值对产生开销。如果您处理的是数百万个k/v对,那么开销将很重要,否则就是噪音,您应该选择对您来说最简单的方式,程序员,让数据库处理数据。开销和访问时间也取决于访问方法。哈希表和B-树是完全不同的算法动物。如果您的数据具有任何程度的键顺序或访问模式依赖于键,那么99%的时间B-树是可行的我认为您提出了一个很好的设计问题,但我认为任何人要给您一个完美的答案,我们都必须更多地了解您处理的数据量、访问模式和许多其他因素。伯克利DB或任何其他DBM实现都会为每个键/值对带来开销。如果您处理的是数百万个k/v对,那么开销将很重要,否则就是噪音,您应该选择对您来说最简单的方式,程序员,让数据库处理数据。开销和访问时间也取决于访问方法。哈希表和B-树是完全不同的算法动物。如果您的数据具有任何程度的键顺序或访问模式依赖于键,那么99%的时间B-树是可行的
我认为你提出了一个很好的设计问题,但我认为任何人要给你一个完美的答案,我们都必须对你处理的数据量、访问模式和许多其他因素有更多的了解。你为什么要使用dbm而不是更好的数据库,如mysql等?它们不是“更好”,只是“更大”的最佳字符串长度将取决于您的应用程序。您会经常搜索数据吗?您的搜索将基于哪些元素?哪些字段将经常被修改?Python允许在几乎任何系统上使用dbm数据库,而无需用户安装任何东西。而且mysql对于我的要求来说太重了。很多访问都很快,通常是读取。写操作不太频繁,所以我不关心写操作的性能。由于dbm中只有一个“键”,所以我只能搜索一个元素……您为什么使用dbm而不是更好的数据库(如mysql等)呢?它们不是“更好”,只是“更大”的最佳字符串长度取决于您的应用程序。您会经常搜索数据吗?您的搜索将基于哪些元素?哪些字段将经常被修改?Python允许在几乎任何系统上使用dbm数据库,而无需用户安装任何东西。而且mysql对于我的要求来说太重了。很多访问都很快,通常是读取。写操作不太频繁,所以我不关心写操作的性能。因为dbm中只有一个“键”,所以我只能搜索一个元素。。。