Без учета изменений можно создать матрицу из вложенных сортированных массивов , а них хранить индекс и ссылку на массив или значение. Значением может быть объект или индекс объекта в отдельном списке всех объектов. Что-то читал давно про asm js. Может пригодится тут. С учетом изменений можно иметь вторую матрицу , в которой будут происходить изменения. На заднем фоне можно их склеивать. Вроде есть какие-то background workers. При поиске и обходе нужно учитывать две матрицы. Скорее всего есть готовые реализации под Вашу задачу на других языках.