У меня довольно большая база данных CouchDB (около 3 миллионов документов). У меня есть разные функции просмотра, возвращающие срезы данных, которые нельзя изменить (или, по крайней мере, следует только модифицировать как крайнее средство).Сортировка по неключевому (произвольному) полю в CouchDB
Мне нужна возможность сортировки в произвольном поле для целей отчетности. Для небольших БД я возвращаю весь объект, json_parse
его в наш PHP-сервер, а затем сортирую там. Тем не менее, мы часто получаем ошибки Out Of Memory, когда делаем это на наших крупнейших БД.
После некоторых исследований я склоняюсь к доступу к ключу сортировки (через параметр URL) в list function и выполняя сортировку там. Это идея, которую я украл from here. Выдержки:
function(head, req) {
var row
var rows=[]
while(row = getRow()) {
rows.push(row)
}
rows.sort(function(a,b) {
return b.value-a.value
})
send(JSON.stringify({"rows" : rows}))
}
Это, кажется, работает для небольших блоков данных, но она по-прежнему требует много работы, чтобы быть готовым производством.
Это:
a) хорошее решение?
б) собирается работать с 3, 5 или 10 миллионами строк?
Это не отвечает на мой вопрос ... Это не имеет никакого отношения к сортировке. Как вы могли бы отсортировать это по 'doc.SomeOtherField'? –
Получите все поле в списке в Webservice Layer, а затем откорректируйте его. Это будет быстрее и будет меньше напряжения на Couch –