Ответ: MongoDB
Внутри всё хешиться и весьма отлично. А вот про индекс, тут нет.
Получить позицию индекса нельзя, т.к. это не будет работать в случае с шардами баз данных, т.к. каждая из них будет иметь свой список хешей, и не будет знать о чужих списках, следственно посчитать позицию индекса не сможет. А большой упор в монго - это как раз шардинг.
Поэтому это лежит на плечах самих разработчиков.
Конечно можно иметь отдельный процесс, например мелкий node.js, в 50 строк. При запуске он будет загружать все данные и создавать все списки в памяти и их сортировать, затем периодически обновлять, и используя например ZeroMQ можно получать данные какие нужно от другого процесса, PHP или т.п.
Делать подобного рода процесс в бд, я бы не стал, т.к. это semi-realtime данные, и оперировать и обновлять их будет в разы эфективнее в памяти на не в бд.
|