Подтвердить что ты не робот

Мне нужна база данных браузера на стороне клиента. Каковы мои варианты

Я создаю веб-сайт, который, как я думаю, должен иметь клиентскую базу данных. Другим вариантом было бы использовать все на сервере за счет повышенной сложности и снижения масштабируемости. Какие у меня варианты? Должен ли я создать плагин? Должен ли я ждать, пока все совместимые с HTML5?


Обновление Было много комментариев о том, зачем мне это нужно. Вот мои мысли. Скажите, если я буду глупым:

  • У клиентов будет большое и сложное состояние, которое потребует что-то вроде базы данных для обеспечения взаимодействия данных, которое мне нужно. Поэтому (я думаю) файлы cookie не соответствуют действительности.
  • Эти данные являются временными, поэтому клиенту все равно, будет ли он удаляться, как только они закрывают сеанс. Однако им нужно будет хранить данные, если они перейдут на другую веб-страницу, а затем вернутся. Поэтому (я думаю) каким-то образом хранение данных в какой-то реализации javascript SQL не будет работать.
  • Я могу сделать все, что хочу делать на сервере, и серверы могут масштабироваться для управления загрузкой (Facebook). Но (я думаю), я бы предпочел построить плагин, чем заплатить за инфраструктуру для поддержки этой нагрузки. Это для запуска голых костей. (Чем богаче стартап, тем ярусом будут мои кости.)
4b9b3361

Ответ 2

Я отвечаю на это примерно на 5 лет позже, но, учитывая, что в некоторых существующих ответах есть ошибки и устаревшие данные, а в исходном вопросе не учтены некоторые моменты, я решил добавить свои два цента.

Во-первых, вопреки тому, что здесь подразумевают другие, localStorage не является базой данных. Это (или должно восприниматься как) постоянное хранилище значений ключей на основе строк...

... что может быть вполне подходящим для ваших нужд (и подводит меня ко второму пункту).

  • Вам нужны явные или неявные отношения между вашими элементами данных?
  • Как насчет возможности запроса по указанным пунктам?
  • Или больше, чем 5 МБ в космосе?

Если вы ответили "нет" на все вышеперечисленное, используйте localStorage и избавьте себя от головной боли, являющейся API-интерфейсами WebSQL и IndexedDB. Ну, может быть, только последняя головная боль, так как прежняя устарела.

Есть также несколько других средств хранения на стороне клиента (нативных и нативных), к которым вы можете обратиться, некоторые из которых устарели *, но все еще поддерживают некоторые браузеры:

Проверьте BakedGoods, если вы хотите использовать любое из этих средств и многое другое, без необходимости писать код операции хранения низкого уровня. Например, разместить данные в одном (или нескольких) из них так же просто, как:

bakedGoods.set({
    data: [{key: "key1", value: "val1"}, {key: "key2", value: "val2"}],
    storageTypes: ["silverlight", "fileSystem", "localStorage"],
    options: optionsObj,
    complete: function(byStorageTypeStoredKeysObj, byStorageTypeErrorObj){}
});

О, и ради полной прозрачности, BakedGoods поддерживается этим парнем прямо здесь :).

Ответ 3

Если вам кажется, что вам это нужно, используйте его для клиентов, которые его поддерживают, и реализуйте резервную копию на стороне сервера для клиентов, которые этого не делают.

Альтернативой может быть использование Flash и локальных общих объектов, которые могут хранить намного больше информации, чем cookie, будут работать во всех браузерах с Flash (что почти во всех браузерах) и хранить типизированные данные. Вам не нужно делать все приложение во Flash, вы можете просто написать небольшую утилиту для чтения/записи данных LSO. Это можно сделать с помощью прямых проектов ActionScript без каких-либо фреймворков и даст вам небольшую 5-15kb swf.

Есть два API, которые вам в первую очередь нужны. SharedObject.getLocal(), чтобы получить доступ к LSO и прочитать/записать данные, и ExternalInterface.addCallback, которые вы можете использовать для регистрации метода AS3 в качестве обратного вызова для вызова метода LSO для чтения/записи.

SharedObject

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/net/SharedObject.html?filter_flex=4.1&filter_flashplayer=10.1&filter_air=2

ExternalInterface

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/external/ExternalInterface.html

Эти ссылки относятся к ссылкам Flex, но для этого вы можете просто создать проект ActionScript без необходимости в фреймворке Flex и, следовательно, значительно уменьшить размер swf. Существует множество хороших IDE, включая бесплатные open-source, такие как FlashDevelop.

FlashDevelop

http://www.flashdevelop.org/

Ответ 4

Я наткнулся на базу данных JavaScript http://www.taffydb.com/, все еще пробуя сам, надеюсь, это поможет.

Ответ 5

Используйте PouchDB.

PouchDB - это база данных JavaScript с открытым исходным кодом, созданная на основе Apache CouchDB, которая хорошо работает в браузере.

Это помогает создавать приложения, которые работают как в сети, так и в автономном режиме.

По сути, он сохраняет последние извлеченные данные в базе данных браузера (использует IndexedDB, WebSQL под капотом), а затем снова синхронизируется, когда сеть становится активной.

Ответ 6

Если вы ищете db в стиле NoSQL на клиенте, вы можете проверить http://www.forerunnerdb.com. Он поддерживает тот же язык запросов, что и MongoDB, и имеет модуль привязки данных, если вы хотите, чтобы DOM автоматически отражал ваши данные.

Он также является открытым исходным кодом, постоянно обновляется новыми функциями, а сообщество вокруг него быстро растет.

Отказ от ответственности, я ведущий разработчик проекта.

Ответ 7

Проверьте локальное хранилище HTML5:

http://people.w3.org/mike/localstorage.html

Вы также можете найти это полезным: Хранилище базы данных HTML5 (SQL lite) - несколько вопросов

Когда Windows 98 впервые появилась, многие из нас все еще застряли на MS-DOS 6.22. Естественно, в новой операционной системе действительно были интересные функции, которые не запускались в MS-DOS.

Наступает время, когда некоторые вещи должны быть оставлены, чтобы освободить место для инноваций. Если ваше приложение действительно новаторское и предложит новые функциональные возможности, которые используют новейшие и самые современные технологии, то, по-видимому, некоторые старые браузеры должны быть оставлены.

Преимущество, которое у вас есть, заключается в том, что в отличие от обновления операционной системы обновление от IE7 до Chrome 8 или Firefox 3.6 является более доступной целью для обычного пользователя вашего приложения, особенно если вы предоставляете ссылку и инструкции по обновлению.