Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 7, 2014 13:31:23

Chocobo
Зарегистрирован: 2014-10-07
Сообщения: 14
Репутация: +  1  -
Профиль   Отправить e-mail  

Серверная часть с БД

Добрый день!

Подскажите, пожалуйста, как поступить:
Сейчас на удаленном хосте работает python-скрипт, который собирает данные в БД.
Эти данные необходимо отправить клиенту по TCP, как я думаю, запросу.

По части серверного приложения на Python - нашел несколько статей по сокетам, но т.к. пока с ними не работал, возникают непонятки:
Если я верно понял - на основании принятого запроса - мы можем выполнять разные действия, грубо говоря:
когда сервер получает запрос “query” - сам делает определенную выборку из БД и отсылает обратно строку, “query_10” - 10 строк, “query_all” - все записи таблицы БД.

Дело в том, что запрос на большую выборку может вернуть довольно большой кусок данных (~1-3 mbyte), правильно ли использовать такую структуру, или посылать данные как-нибудь кусками, или вовсе отдать это на СУБД, т.е. авторизовать клиента в базе,предварительно оставив только необходимые привилегии, и организовывать выборку без участия серверных скриптов?

Офлайн

#2 Окт. 7, 2014 16:37:11

s0rg
От:
Зарегистрирован: 2011-06-05
Сообщения: 777
Репутация: +  25  -
Профиль   Отправить e-mail  

Серверная часть с БД

Chocobo
Дело в том, что запрос на большую выборку может вернуть довольно большой кусок данных (~1-3 mbyte)
Это не большой кусок данных, совсем )

Chocobo
правильно ли использовать такую структуру, или посылать данные как-нибудь кусками, или вовсе отдать это на СУБД, т.е. авторизовать клиента в базе,предварительно оставив только необходимые привилегии, и организовывать выборку без участия серверных скриптов?
Тоже вариант, но тут решать только Вам. У обоих подходов есть плюсы и минусы.

Можете еще посмотреть на sandman, емнип он умеет далать RESTful доступ к БД.

Офлайн

#3 Окт. 8, 2014 08:53:04

Chocobo
Зарегистрирован: 2014-10-07
Сообщения: 14
Репутация: +  1  -
Профиль   Отправить e-mail  

Серверная часть с БД

s0rg, благодарю за ответ.

Стоит наверное добавить, что клиенты предполагаются на android и Win-системах, так что организовать API на стороне сервера, к которому будут обращаться мне кажется было бы вернее. Да и проще, чем писать на клиентах отдельно каждому свою реализацию доступа к серверу, можно просто постучаться ему на порт и получить мешок данных в известном виде - более улыбающая перспектива

Ничего конфиденциального хранить и передавать не собираюсь - вся инфа не является секретом.
На сервере парсятся интересные мне данные, структурируются и попадают в БД (сейчас sqlite3, возможно он и останется, если авторизоваться в БД никому не потребуется). База небольшая - десяток таблиц, несколько связей, весь объем не больше 15 Mbyte.

Хотелось бы чтоб в клиентах можно было отображать информацию из БД по фильтрам и периодически получать уведомления о новых записях в БД.

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

У обоих подходов есть плюсы и минусы.
Вот об этом и интересно, как поступить правильно… Велосипедить мы все горазды
Пусть проект just for fun, но он также нацелен отточить навык, и хочется, чтоб показать его кому-либо было не совсем стыдно

Офлайн

#4 Окт. 8, 2014 17:28:49

s0rg
От:
Зарегистрирован: 2011-06-05
Сообщения: 777
Репутация: +  25  -
Профиль   Отправить e-mail  

Серверная часть с БД

Chocobo
android и Win-системах
Тогда - лучше все-же некое http-api (но это мое мнение) - просто отдаете клиентам кусок данных (можно их gzip-нуть еще чтоб кусок быстрее по сети пролез, размер куска выбираете по-больше, чтобы они часто за ними не лазили), а уже фильтрацию и поиск делаете на клиентах. Каждой клиент запоминает, когда и сколько он получил данных, и периодически, просто опрашивает сервак на предмет новых, в этом случае - просто отдаете им только новые записи.
Если вы дадите прямой доступ к БД, то навыков не отточите ;)

Отредактировано s0rg (Окт. 8, 2014 17:29:21)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version