Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: несколько вопросов по БД
Форум на CrossPlatform.RU > Разработка > SQL. Базы данных.
mezmay
Делаю клиент-серверный чат, несколько вопросов по базам данных:

1. Сейчас он на SQLite, хочу перейти на защищенную БД - MySql или PostgreSQL. Надо выбрать, исходя из всех требований
2. Сейчас все сообщения хранятся в базе постоянно, то есть админ компа, на котором она (база) стоит, может читать все сообщения. Нормальная ли это практика для, например, корпоративного чата, в котором планируется довольно много личной переписки. Как вообще принято делать? давать админу доступ или нет?
3. Как вообще можно скрыть от админа БД сообщения? Шифровать? Сразу удалять? (записывать сообщения в базу надо для реализации оффлайн-сообщений)
4. Как распространять серьезную СУБД с дистрибутивом своей программы? Хотелось бы чтобы установка проходила в автомате (далее-далее-далее), и пользователю не требовалось бы самому, например, запускать какие-то службы или дополнительные проги типа pgadmin.
5. Ну и вообще нужна БД, не требующая от меня, разработчика, много танцев с бубном...
ilyabvt
Цитата
давать админу доступ или нет?

Разумеется нет.
Цитата
Как вообще можно скрыть от админа БД сообщения? Шифровать?

Шифровать. Думаю не надо пояснять что ключ не должен хранится в базе.
Цитата
Как распространять серьезную СУБД с дистрибутивом своей программы?

А ее не нужно распространять. СУБД будет на сервере, а пользователь получит клиент.
Litkevich Yuriy
Цитата(mezmay @ 15.1.2014, 15:27) *
хочу перейти на защищенную БД
А что ты под этим понимаешь?
Цитата(mezmay @ 15.1.2014, 15:27) *
Как вообще можно скрыть от админа БД сообщения? Шифровать?
да, можно шифровать.
Для SQLite есть SQLCipher. А для других СУБД сомнительно, что найдутся бесплатные инструменты.
mezmay
Цитата
Цитата
Как вообще можно скрыть от админа БД сообщения? Шифровать?

Шифровать. Думаю не надо пояснять что ключ не должен хранится в базе.
А где хранить?

Цитата
Цитата
Как распространять серьезную СУБД с дистрибутивом своей программы?

А ее не нужно распространять. СУБД будет на сервере, а пользователь получит клиент.
Я имею в виду будущему админу тоже дать дистрибутив программы сервера, и чтобы ему не приходилось самому устанавливать и настраивать СУБД


Цитата(Litkevich Yuriy @ 15.1.2014, 21:32) *
Цитата(mezmay @ 15.1.2014, 15:27) *
хочу перейти на защищенную БД
А что ты под этим понимаешь?
Защищает доступ к данным через логин-пароль

Цитата(Litkevich Yuriy @ 15.1.2014, 21:32) *
Цитата(mezmay @ 15.1.2014, 15:27) *
Как вообще можно скрыть от админа БД сообщения? Шифровать?
да, можно шифровать.
Для SQLite есть SQLCipher. А для других СУБД сомнительно, что найдутся бесплатные инструменты.
но ведь не обязательно шифровать родными субд-ными средствами?
Litkevich Yuriy
Цитата(mezmay @ 15.1.2014, 23:30) *
но ведь не обязательно шифровать родными субд-ными средствами?
ну конечно не обязательно. Особенно если ты возможностями СУБД не собираешься пользоваться, а просто используешь её как примитивное хранилище. И тебя устраивает зашифровать одно поле БД с текстом.

Если же ты собираешься использовать возможности SQL, такие как соединения, вложенные запросы, тригеры и прочее, то запрос должен выполнятся над расшифрованными данными, а на клиенте ты этого не сделаешь (т.к. запрос выполняется самой СУБД без участия клиента).
mezmay
остается вопрос по распространению (развертыванию) СУБД вместе с дистрибутивом программы-сервера чата
Litkevich Yuriy
воспользоваться каким-нибудь Установщиком, с помощью его сценария проверять установлена ли уже нужная версия СУБД или нет, если нет, ставить из своего дистрибутива.
Iron Bug
По некоторым вопросам:
1. Что касается конкретно MySQL, то после покупки их Oracle'ом он стал испытывать серьёзные проблемы с безопасностью и открытостью кода. Опенсорс комьюнити решило отказаться от него, теперь на многих Linux-платформах будет использоваться MariaDB, опенсорсный клон MySQL, поддерживаемый его оригинальными разработчиками. Некоторые дистрибутивы уже официально объявили о переходе с MySQL на MariaDB. Так что если и стоит выбирать базу, то с видами на будущее.

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

Имхо, SQLite - простая и удобная для мелких приложений база. К тому же, она бесплатная и опенсорсная. Для такого приложения не требуются никакие особые возможности БД, поэтому чем меньше возни для админа - тем больше шансов у такой софтины завоевать хоть какую-то популярность.
electronik
Цитата
1. Сейчас он на SQLite, хочу перейти на защищенную БД - MySql или PostgreSQL. Надо выбрать, исходя из всех требований

Так а требования где?. А по сути, нужно делать на той, которую знаете. PostgreSQL и FireBird можно заюзать embedded версию, без инсталла. у последнего для связи юзается всего пара библиотек. Но при создании БД, нужно хорошо продумывать её структуру.
Цитата
Сейчас все сообщения хранятся в базе постоянно, то есть админ компа, на котором она (база) стоит, может читать все сообщения. Нормальная ли это практика для, например, корпоративного чата, в котором планируется довольно много личной переписки. Как вообще принято делать? давать админу доступ или нет?

Это тонкая грань безопастности. Если например есть служюа безопастности, то она скорее захочет иметь полный доступ. Штатный админ не должен иметь доступ ко всей переписке, а вот IT-директор или Генеральный директор должен. Но если сделать разраничение прав, то где гарантия что админ скажет директору что можно читать всю переписку, или тихонько добавит себя в "мне всё можно читать" и на равне с директором будет читать всю переписку. Возможность должна быть, но по-умолчанию не доступна. И у меня закралась мысль что все клиенты напрямую подключаются к БД.
Цитата
3. Как вообще можно скрыть от админа БД сообщения? Шифровать? Сразу удалять? (записывать сообщения в базу надо для реализации оффлайн-сообщений)

А по сети они сейчас в открытом виде пересылаются? если да, то не вижу смысла во всём остальном, т.к отследить все сообщения отследить не составит труда. Как вариант, можно кодировать всё в base64 и уже потом отправлять. вариант лайтовы, но хоть уже что то будет.
Цитата
5. Ну и вообще нужна БД, не требующая от меня, разработчика, много танцев с бубном...

Однозначно оставляйте SQLite. В во всех остальных случаях Вам придётся заниматься технической поддержкой БД, а то еще хуже, её обслуживанием.

mezmay
Цитата(electronik @ 18.1.2014, 2:36) *
И у меня закралась мысль что все клиенты напрямую подключаются к БД.
Нет, подключаются к серверу чата, ну а он работает с БД.

Цитата(electronik @ 18.1.2014, 1:36) *
А по сети они сейчас в открытом виде пересылаются? если да, то не вижу смысла во всём остальном, т.к отследить все сообщения отследить не составит труда. Как вариант, можно кодировать всё в base64 и уже потом отправлять. вариант лайтовы, но хоть уже что то будет.
Сейчас перехожу на SSL сокеты, так что с пересылкой всё будет нормально. Остается тогда еще базу зашифровать из программы
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.