Идеальная длина строки для базы данных DBM? - PullRequest
1 голос
/ 15 июля 2009

При использовании базы данных DBM (например, Беркли или GDBM) лучше хранить данные, используя меньше длинных строк или больше коротких строк? Я могу легко структурировать свои данные в любом случае. Я ищу «лучше» в смысле производительности, но меня интересуют и другие последствия.

Ответы [ 3 ]

3 голосов
/ 20 января 2011

Berkeley DB, или любая другая реализация DBM, будет нести издержки для каждой пары ключ / значение. Если вы имеете дело с миллионами пар к / в, то издержки будут иметь значение, в противном случае это шум, и вы должны выбрать, что проще для вас, программист, и позволить базе данных работать с данными. Издержки и время доступа также будут зависеть от способа доступа. Хеш-таблицы и B-деревья - совершенно разные алгоритмические животные. Если ваши данные имеют какую-либо степень упорядочения ключей или схемы доступа, зависящие от ключей, то в 99% случаев B-деревья подходят.

Я думаю, что вы задаете замечательный вопрос о дизайне, но я думаю, что для того, чтобы кто-то мог дать вам идеальный ответ, нам всем нужно было бы знать намного больше о количестве данных, с которыми вы имеете дело, схемах доступа и многих других факторы.

1 голос
/ 15 июля 2009

Если вы будете часто искать или изменять данные, большее количество коротких строк обеспечит лучшую производительность.

, т. Е. Вы не хотите искать подстроку одной из этих длинных строк или часто изменять какое-либо значение в середине строки.

0 голосов
/ 15 июля 2009

Я думаю, что на этот вопрос действительно сложно дать общий ответ. Здесь так много переменных, что вам действительно нужно протестировать некоторые распространенные сценарии, чтобы определить наиболее подходящий для вас ответ.

Некоторые факторы, которые следует учитывать:

  • Требуются ли для поиска более крупных строк подстроки?
  • Какие поиски вы будете выполнять по данным?

В конце концов, обычно лучше использовать подход, который дает наиболее нормализованную схему. С этого момента может начаться оптимизация, и, в зависимости от вашей базы данных, возможно, есть более подходящие альтернативы, чем реструктуризация базовой схемы исключительно для повышения производительности.

...