Есть таблица, с несколькими тысячами записей, такого вида, примерно такого вида:
integer id, integer parent_id, text name, text address
Длина ряда — примерно полкилобайта.
Вопрос — как это запихать в виде справочника в клиентский (браузерный) Javascript, чтоб оно не сдохло от натуги? На сервер положить представляется сильно проблематичным, ввиду крайне специфисской архитектуры.
Декомпрессия в фоне?
Или если не нужна совместимость с IE/Opera, то можно вполне и Byte Arrays использовать, что ускорит неимоверно, и позволит отказаться от фона.
Что если положить все в текстовый файлик на одном уровне с html файлом, который подгружает javascript и просто сделать запрос типа GET на /database.txt?
Можно попробовать не JSON, а придумать свой формат (в данном случае можно взять CSV) и его парсить. В этой книжке (страница примерно 142) написано, что такой подход может оказаться необычно быстрым.
Угу, а если таки файл будет слишком большой, то можно разбить его на несколько частей и подгружать соответственно, заодно убивать ссылку на эту часть после прочтения. будет медленней, зато можно все вместить. Тем более, что это и так справочник, не думаю, что его нужно показывать целиком. Например A-D, E-G, H-M…
Есть таблица, с несколькими тысячами записей, такого вида, примерно такого вида:
integer id, integer parent_id, text name, text address
Вопрос — как это запихать в виде справочника в клиентский (браузерный) Javascript, чтоб оно не сдохло от натуги?
0.5k x Nk = 0.5*Nm
Вот какой смысл заморачиваться с дроблением несколько-метрового словаря? Оно и без всякой возни не сдохнет. Пакуете в JSON, разворачиваете в объект на клиенте и работаете с ним не заморачиваясь. А потом думаете как оптимизировать. Хотя я сомневаюсь что это понадобится.
Беда в том, что есть опасения в быстродействии оного на медленных клиентских машинах (это интерфейс для специфической и очень распространенной в узких кругах системы). Я вполне могу ожидать клиентов на селеронах первого-второго поколений. На моей машине с восемью процессорными ядрами и 16Гб памяти я вообще не замечаю никаких проблем с быстродействием. Но хочется максимально подготовиться к IRL :)
Печально. Попробуте все же погонять на виртуалке с одним ядном, минимумом памати и подобным софтовым набором. Не исключено что тормозить тоже не будет. Я не замечал большого оверхеда на хранении списков и высоких накладных расходов по доступу к элементам в JS. А вот всякие попытки упаковки/распаковки для минимизации объема харнимых данных однозначно увеличат расходы на доступ к элементам при сомнительном выигрыше с объеме хранения.