Могу ли я создать обновляемую базу данных HTML5 для локального поиска?

Я делаю сайт с огромным упором на поиск по индексу внутри сайта. Проблема заключается в запросах, так как производственный сервер очень дешев. Я подумал, что было бы неплохо начать с node.js вместо PHP для разработки. Но проблема лежит гораздо дальше.

Я хочу отправить часть (имя, фамилию, теги, URL) базы данных сайта в клиентский браузер и выполнить локальный поиск, отправлять оперативные обновления каждый раз, когда добавляется новая запись в базу данных пользователем и повторно загрузить все примерно через 24 часа. Таким образом, сервер не слишком много работает, помещая результаты в клиент, а вместо этого отправляет новые записи или базу данных.

Я могу это сделать? Что мне нужно? Я думал об использовании IndexedDB и добавлении полифилла для браузеров WebSQL, но я не знаю, могут ли эти технологии сделать то, о чем я прошу сегодня.


person DarkGhostHunter    schedule 29.01.2013    source источник


Ответы (1)


IndexedDB — идеальный инструмент для этой работы, при условии, что совместимость подходит для вашей клиентской базы. Хотя WebSQL был бы завидной альтернативой, знайте, что во всех смыслах и целях спецификация «мертва» и не будет развиваться дальше.

IDB — это «индексированное» хранилище объектов JavaScript, поэтому вы можете добавлять индексы к атрибутам ваших объектов и «перемещаться» по ним без огромных потерь производительности, связанных с попыткой сделать это с помощью чего-то вроде localStorage. Например, у вас есть список клиентов. Вы можете добавить объекты клиентов { 'name': 'blah', 'surname': 'McBlaherson', 'tags': [ 1, 2, 3] }, добавить некоторые индексы и использовать IDB, чтобы, скажем, вернуть всех клиентов по фамилии.

Большой проблемой в том, что вы описываете, является обработка аспектов «синхронизации» модели клиент-сервер. Допустим, пользователь открывает сайт в браузере и на своем мобильном телефоне. Как вы объединяете хранилища данных? Звучит просто, но уверяю вас, это не так (вот почему git и другие системы контроля версий такие волшебные).

person buley    schedule 29.01.2013
comment
Вау, IDB действительно идеален. Насчет синхронизации я думал об этом: 1) Хранить время загрузки базы 2) Каждый раз, когда клиент заходит в поиск, ищет обновления. 2) Извлечь разницу на сервере (если есть новые данные) 3) Протолкнуть разницу на клиент, добавив новые строки - person DarkGhostHunter; 29.01.2013
comment
Ссылка не отображается, но если вы сделаете повторный пост, я дам вам знать, что я думаю. IDB — моя специальность/увлечение. - person buley; 29.01.2013