Сообщение Re[2]: "с моим участием" от 22.09.2014 15:39
Изменено 22.09.2014 15:40 AndrewVK
Здравствуйте, Pavel Dvorkin, Вы писали:
PD>Насколько я понимаю, это означает "если я хоть-что то в этот тред написал", так ?
Или являешься его автором. Да.
PD>ИМХО было бы лучше, если бы это означало "это сообщение есть некий потомок любого уровня от моего сообщения". Понимаю, что реализовать это сложнее.
Это не просто сложнее, это, без сильного разрастания размера БД, просто невозможно. Для такого требуется хранить в проиндексированном виде табличку вида (thisid, parentid) для всех возможных комбинаций конкретного родителя и всех его потомков. По грубой оценке это примерно 300М записей. 8 байт запись + минимум один индекс по parentid * 50% fill factor получаем 9Гб табличку уже сейчас. А у нас вся БД — 30.
Второй вариант — хранить табличку вида (topicid, userid, lastreplyid) и обновлять ее рекурсиным способом при каждом ответе. Здесь размеры уже будут поскромнее — примерно 5М записей. при индексах по topicid и userid получаем 400М. Но резко замедлится добавление сообщения — придется при каждом посте грузить весь топик в память, либо мудорить что то с hierarchyid
PD>Насколько я понимаю, это означает "если я хоть-что то в этот тред написал", так ?
Или являешься его автором. Да.
PD>ИМХО было бы лучше, если бы это означало "это сообщение есть некий потомок любого уровня от моего сообщения". Понимаю, что реализовать это сложнее.
Это не просто сложнее, это, без сильного разрастания размера БД, просто невозможно. Для такого требуется хранить в проиндексированном виде табличку вида (thisid, parentid) для всех возможных комбинаций конкретного родителя и всех его потомков. По грубой оценке это примерно 300М записей. 8 байт запись + минимум один индекс по parentid * 50% fill factor получаем 9Гб табличку уже сейчас. А у нас вся БД — 30.
Второй вариант — хранить табличку вида (topicid, userid, lastreplyid) и обновлять ее рекурсиным способом при каждом ответе. Здесь размеры уже будут поскромнее — примерно 5М записей. при индексах по topicid и userid получаем 400М. Но резко замедлится добавление сообщения — придется при каждом посте грузить весь топик в память, либо мудорить что то с hierarchyid
... << RSDN@Home 1.0.0 alpha 5 rev. 0 on Windows 8 6.2.9200.0>>
Re[2]: "с моим участием"
Здравствуйте, Pavel Dvorkin, Вы писали:
PD>Насколько я понимаю, это означает "если я хоть-что то в этот тред написал", так ?
Или являешься его автором. Да.
PD>ИМХО было бы лучше, если бы это означало "это сообщение есть некий потомок любого уровня от моего сообщения". Понимаю, что реализовать это сложнее.
Это не просто сложнее, это, без сильного разрастания размера БД, просто невозможно. Для такого требуется хранить в проиндексированном виде табличку вида (thisid, parentid) для всех возможных комбинаций конкретного родителя и всех его потомков. По грубой оценке это примерно 300М записей. 8 байт запись + минимум один индекс по parentid * 50% fill factor получаем 9Гб табличку уже сейчас. А у нас вся БД — 30.
Второй вариант — хранить табличку вида (topicid, userid, lastreplyid) и обновлять ее рекурсиным способом при каждом ответе. Здесь размеры уже будут поскромнее — примерно 5М записей. при индексах по topicid и userid получаем 400М. Но резко замедлится добавление сообщения — придется при каждом посте грузить весь топик в память, либо мудрить что то с hierarchyid
PD>Насколько я понимаю, это означает "если я хоть-что то в этот тред написал", так ?
Или являешься его автором. Да.
PD>ИМХО было бы лучше, если бы это означало "это сообщение есть некий потомок любого уровня от моего сообщения". Понимаю, что реализовать это сложнее.
Это не просто сложнее, это, без сильного разрастания размера БД, просто невозможно. Для такого требуется хранить в проиндексированном виде табличку вида (thisid, parentid) для всех возможных комбинаций конкретного родителя и всех его потомков. По грубой оценке это примерно 300М записей. 8 байт запись + минимум один индекс по parentid * 50% fill factor получаем 9Гб табличку уже сейчас. А у нас вся БД — 30.
Второй вариант — хранить табличку вида (topicid, userid, lastreplyid) и обновлять ее рекурсиным способом при каждом ответе. Здесь размеры уже будут поскромнее — примерно 5М записей. при индексах по topicid и userid получаем 400М. Но резко замедлится добавление сообщения — придется при каждом посте грузить весь топик в память, либо мудрить что то с hierarchyid
... << RSDN@Home 1.0.0 alpha 5 rev. 0 on Windows 8 6.2.9200.0>>