Зеркальная схема базы данных MySQL с локальным хранилищем HTML5 для запросов

Я провел некоторое исследование локального хранилища HTML5, и мне кажется вероятным, что я мог бы отразить структуру базы данных MySQL для использования в приложении, которому требуется много данных только для одного человека.

Зачем мне это делать? В свободное время я разработчик веб-игр: PHP, MySQL и все технологии, которые их украшают. До сих пор я создавал базы данных, которые поддерживают многих игроков, но мои игры предназначены для «одиночной игры с несколькими возможностями». А для игр, которые предназначены только для одиночной игры, нет смысла даже иметь соединение с БД, если только они не сохраняются на веб-сервере!

Я хочу добиться однопользовательского режима, который никогда не коснется моей базы данных и будет доступен в автономном режиме. Однако код, стоящий за всем этим, по-прежнему будет выполнять SQL-запросы. В идеале я думаю, что мог бы создать своего рода уровень абстракции локального хранилища, который будет отвечать на запросы.

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

обновление: прекращение поддержки веб-базы данных SQL меня беспокоит. Это выглядело очень привлекательным для моей ситуации; поскольку он использует SQL, изменение моих запросов не должно быть таким сложным. Теперь, когда мы продвигаемся к IndexedDB, я не уверен, что это будет так же просто.


person Vael Victus    schedule 17.09.2012    source источник
comment
Да, это возможно. Я думаю, это называется веб-хранилищем или что-то в этом роде.   -  person Cole Johnson    schedule 17.09.2012
comment
@sachleen ваша ссылка не работает, также локальные базы данных официально устарели!   -  person xception    schedule 17.09.2012


Ответы (1)


Я прочитал ваш вопрос несколько раз и продолжаю задаваться вопросом: «Зачем вам это делать» ;-) Этот вопрос вызывает у меня больше вопросов, так что...

Что вы подразумеваете под «много данных»? В конечном счете, уместна ли в данном случае метафора sql? Слой абстракции, который может отвечать на «sql-подобные» запросы, интересен сам по себе, но звучит чрезвычайно сложно. Может ли более простое решение выполнить эту работу, например, объект JSON? Как насчет сохранения данных в случаях, когда пользователи очищают кеш, историю, переустанавливают браузер и т. д.? Даже сложный литерал javascript или объект JSON могут предоставить очень простые средства периодического сохранения/резервного копирования и восстановления. (Интересно, что только что выпущенный PostgreSql 9.2 включает JSON в качестве типа данных. Может быть, SQL и NoSql будут тяготеть к какой-то общей почве?) Извините, если это больше похоже на комментарий, чем на ответ, ваш вопрос звучит как вопрос более высокая плоскость.

ИЗМЕНИТЬ

поиск в Google «интерпретатора javascript sql» показывает некоторые интересные вещи:

http://www.terminally-incoherent.com/blog/2009/05/19/sql-emulation-tool-in-javascript-part-2/#comments

https://github.com/forward/sql-parser#readme

Создание парсера SQL JavaScript для SQLite3 (с Lemon? ANTLR3 ?)

http://jsdb.sourceforge.net/demo.html

person vector    schedule 17.09.2012
comment
Для примера «много данных»: 20 таблиц по 15 столбцов в каждой. Я считаю, что SQL подходит, поскольку моя цель состоит в том, чтобы сначала построить реальную базу данных, а затем иметь простой способ экспорта этих данных в ее локальную версию. (структура и все такое) JSON Object — очень хороший вопрос! Действительно просто впихнуть все данные (все 20 таблиц, все) в массивный объект? Я не уверен, вы думаете, что это действительно может быть так просто? Сохранение данных не идет дальше сохранения копии статистики игрока в БД с помощью кнопки «Сохранить». Я ценю ваши усилия по этому вопросу. - person Vael Victus; 17.09.2012
comment
... тогда сколько строк? В конце концов, JSON можно рассматривать как одну большую строку *ss. Я не могу себе представить, что это сложнее, чем целый уровень персистентности, подобный sql. Сначала я бы попробовал пойти с более простым решением. Затем посмотрите, как и что может/сломает его. Даже если вы воспроизведете абстракцию sql, у вас будет куча JS, и вам все равно придется иметь дело с простой моделью JS, которую можно передать в DOM. - person vector; 18.09.2012
comment
О! Я даже не думал о строках, которые могут варьироваться от 1 до нескольких строк. Например, инвентарь игрока. В игре со 100 предметами инвентаря игрока, множеством строк для отслеживания отношений между персонажами и всем, что можно добавить, строка JSON может стать слишком сложной... не так ли? Разве это не так? Я за простой маршрут. И будет ли это по-прежнему относиться к запросам к базе данных? Я не хочу менять какой-либо код, чтобы заставить его работать. Таким образом, бит базы данных уровня виртуализации/абстракции. - person Vael Victus; 18.09.2012
comment
Я предполагаю, что строка будет выглядеть довольно сложной как строка, как объект JSON - может быть, не так. Итак, вы смотрите на DSL, которому нужно общаться с некоторым представлением данных. Возможно, вы ищете что-то довольно уникальное :-) Поздравляю! Что вы подразумеваете под И будет ли это по-прежнему применяться к запросам к базе данных? - person vector; 18.09.2012
comment
Если это должен быть sql, как насчет апплета Java со встроенным sqlite db? Вы могли бы легко общаться с апплетом через javascript, и у вас было бы что-то для реального sql на другой стороне? Апплет может даже записать материал на диск (если пользователь на это согласится). Здесь просто мысли вслух. - person vector; 18.09.2012
comment
Только для этого Java-апплета было бы слишком много. Говоря о запросах к базе данных, я имею в виду, что я точно знаю, что у меня будут многопользовательские игры, которые я всегда строю для подключения к серверу. Я то хочу сказать, ой, не онлайн? Хорошо, сохраните их в локальном хранилище. Это действительно отстой, что FF не поддерживает базу данных Web SQL, потому что кажется, что я мог бы довольно легко отразить некоторые функции. Тем не менее, мне грустно говорить, что прямо сейчас мне, возможно, придется подождать, пока хранилище HTML5 немного созреет, прежде чем я смогу увидеть, как реализуется моя идеальная ситуация. - person Vael Victus; 18.09.2012