Безопасно ли использовать jsonb в PostgreSQL?

Стоит ли давать пользователям создавать поля внутри jsonb? Хотелось бы дать возможность пользователям добавлять любые данные, которые они хотят добавить. И выводить потом на странице. Насколько это безопасно?

Например дать информацию о себе. Есть стандартные поля(город, дата рождения, ФИО), но если вдруг люди ходят добавить что-то, то легко могли это сделать.
Т.е. как вконтакте выводится:
дата рождения      такая-та дата
родной город        Такой-то
телефон                 вот такой
#И тут уже поля, которые добавляют пользователи
Пользователь назвал поле             А тут ответ на него
Пользователь назвал 2                   И ответ на 2 поле

Это просто для примера.
Безопасно ли?
Ограничивать размер поля?
Ограничивать количество кастомных полей?
Зачем это нужно?
Скорость работы и выборки?(поиск по этим полям производиться не будет, только чтение и запись)
Может лучше обычную строку сделать, внутри текстовый json и парсить при помощи javascript'a?
  • Вопрос задан
  • 2876 просмотров
Решения вопроса 1
sim3x
@sim3x
Безопасно ли?
в общем случае - нет
Ограничивать размер поля?
нет смисла
Ограничивать количество кастомных полей?
нет смисла
Зачем это нужно?
разве что кеширование. и чтоб показать, что постгря круче монго
Скорость работы и выборки?
vibhorkumar.wordpress.com/2014/05/15/write-operati...
Может лучше обычную строку сделать, внутри текстовый json и парсить при помощи javascript'a?
если все вот ето не будет использоваться, то да

В общем случае, использование в РСУБД таких финтов не оправдивает ожиданий, а прибавляет боли
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Существуют для этого модули. Например:

https://github.com/djangonauts/django-hstore хранит список пар "ключ-значение". Кроме того, можно задавать схему кастомных полей - указывать их список и типы; в модели, в ModelForm, в админке появляются новые поля, неотличимые от настоящих, но хранящиеся на самом деле в колонке типа hstore.

https://github.com/bradjasper/django-jsonfield - уже для полноценного валидируемого JSON.

Использовал эти вещи раза два, а именно первую библиотеку. Можно схему менять в зависимости от разных параметров модели, всё очень красиво и удобно. В production, однако, по разным причинам не попало пока. Не знаю, может быть ещё доберусь до боевого использования.

Вообще очень неудобно, что такие вольности со схемой в реляционных СУБД делаются так трудно и костылеобразно.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы