2013-07-14 2 views
2

Я создаю приложение для веб-чата с использованием Node.js. Я вроде как постепенно его создаю, пока приложение уже работает в Node.js PaaS и проверяется моей группой друзей. Дело в том, что я не могу тратить много денег на службы базы данных для хранения истории чатов.Система базы данных на основе JSON

Так что я разрабатываю сложную файловую систему баз данных, подобную SQLite. Хотя я знаю, что SQLite выполняет аналогичную работу, я хотел хранить данные в формате JSON. Причин много. Одна из важных причин состоит в том, чтобы сократить использование ЦП, я просто отправлю необработанные данные JSON клиентам, где они будут правильно отображаться с помощью AngualarJS.

Мои вопросы:

  1. Ваше мнение об этом методе?
  2. Является ли этот метод как по вертикали, так и по горизонтали масштабируемым?
  3. Каковы возможные проблемы с безопасностью?
  4. Есть ли альтернативный метод?

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

Обновление: Я не хочу использовать MongoDB или другие, поскольку я не могу позволить себе их для этого проекта. Я хочу хранить данные в плоском файле и размещать их на диске. Потому что многие провайдеры PaaS дают 1 ГБ дискового пространства всего за 1 доллар, в то время как 1 ГБ хранилища MongoDB очень высоки ... также они даже подсчитывают нам количество переданных данных, количество PUT и GET и т. Д.

+2

https://github.com/petersirka/nosql, может быть? Другие системы * * embedded * "перечислены на странице http://nosql-database.org/. –

+0

+1 Спасибо. Это помогло мне. :) – Mithun

ответ

1

Я знаю MongoDB (и, возможно, others) использует двоичный формат JSON. Я бы посмотрел на это, чтобы убедиться, что вы не изобретаете колесо. По крайней мере, я бы сказал, что, поскольку для MongoDB существует Node.js-библиотека, это может быть хорошим компромиссом между тем, что вам нужно, и простоте реализации (поскольку вам не нужно будет писать программное обеспечение базы данных, что позволяет вам больше сосредоточиться на самом приложении).

+1

Я не хочу использовать MongoDB или другие, так как я не могу позволить себе их для этого проекта. Я хочу хранить данные в плоском файле и размещать их на диске. Потому что многие PaaS обеспечивают 1 ГБ дискового пространства всего за 1 доллар, в то время как 1 Гб хранилища MongoDB очень высок ... также они даже подсчитывают нам количество переданных данных, количество PUT и GET и т. Д. – Mithun

1

Ваше мнение по этому методу?

Метод является хорошим методом, однако из-за отсутствия структуры в SQLite-подобной базе данных вы столкнетесь с проблемами, если обрабатываете большие объемы данных. Однако JSON с NodeJS хорошо работает вместе, поэтому у вас есть веская причина для желания использовать эти два.

Этот метод как по вертикали, так и по горизонтали масштабируется?

В простой реализации этого, это вертикальное масштабирование, но не горизонтальное масштабирование. Легко добавить больше дисков на сервер, но гораздо сложнее реализовать масштабированное, распределенное, отказоустойчивое программное обеспечение, и список продолжается ... Существует много причин, по которым горизонтальное масштабирование намного сложнее с программным обеспечением, а основная часть который поставляется с MongoDB, и аналогичные системы предназначены для решения проблемы горизонтального масштабирования. Если вы хотите меньше навалом, вы не получите горизонтальное масштабирование (обычно), и если вы хотите горизонтальное масштабирование, вы получите больше объема.

Каковы возможные проблемы с безопасностью?

Вам нужно следить за JSON-инъекцией.Вот некоторые ресурсы о JSON инъекций: http://www.slideshare.net/null0x00/json-injection https://www.owasp.org/index.php/OWASP_AJAX_Security_Guidelines#Protect_against_JSON.2FJavaScript_Hijacking

Есть ли альтернативный метод доступен?

Как следует из других вопросов, для вашего ранее созданного программного обеспечения базы данных, такого как MongoDB, MySQL и RethinkDB, будет ваш альтернативный метод. Помните, однако, что они могут свободно размещать их самостоятельно.

Примечания + Источники

Может хотите взглянуть на https://github.com/boboman13/flatfile.

Получено из моего собственного опыта с этим.

Смежные вопросы