Форум сайта python.su
1
Добрый день!
Подскажите, пожалуйста, как поступить:
Сейчас на удаленном хосте работает python-скрипт, который собирает данные в БД.
Эти данные необходимо отправить клиенту по TCP, как я думаю, запросу.
По части серверного приложения на Python - нашел несколько статей по сокетам, но т.к. пока с ними не работал, возникают непонятки:
Если я верно понял - на основании принятого запроса - мы можем выполнять разные действия, грубо говоря:
когда сервер получает запрос “query” - сам делает определенную выборку из БД и отсылает обратно строку, “query_10” - 10 строк, “query_all” - все записи таблицы БД.
Дело в том, что запрос на большую выборку может вернуть довольно большой кусок данных (~1-3 mbyte), правильно ли использовать такую структуру, или посылать данные как-нибудь кусками, или вовсе отдать это на СУБД, т.е. авторизовать клиента в базе,предварительно оставив только необходимые привилегии, и организовывать выборку без участия серверных скриптов?
Офлайн
25
ChocoboЭто не большой кусок данных, совсем )
Дело в том, что запрос на большую выборку может вернуть довольно большой кусок данных (~1-3 mbyte)
ChocoboТоже вариант, но тут решать только Вам. У обоих подходов есть плюсы и минусы.
правильно ли использовать такую структуру, или посылать данные как-нибудь кусками, или вовсе отдать это на СУБД, т.е. авторизовать клиента в базе,предварительно оставив только необходимые привилегии, и организовывать выборку без участия серверных скриптов?
Офлайн
1
s0rg, благодарю за ответ.
Стоит наверное добавить, что клиенты предполагаются на android и Win-системах, так что организовать API на стороне сервера, к которому будут обращаться мне кажется было бы вернее. Да и проще, чем писать на клиентах отдельно каждому свою реализацию доступа к серверу, можно просто постучаться ему на порт и получить мешок данных в известном виде - более улыбающая перспектива
Ничего конфиденциального хранить и передавать не собираюсь - вся инфа не является секретом.
На сервере парсятся интересные мне данные, структурируются и попадают в БД (сейчас sqlite3, возможно он и останется, если авторизоваться в БД никому не потребуется). База небольшая - десяток таблиц, несколько связей, весь объем не больше 15 Mbyte.
Хотелось бы чтоб в клиентах можно было отображать информацию из БД по фильтрам и периодически получать уведомления о новых записях в БД.
Для этого,как я и писал выше, предполагаю принимать на сервере строкой входные параметры и генерить запросы к БД на их основании, после чего отправлять результат запроса обратно.
У обоих подходов есть плюсы и минусы.Вот об этом и интересно, как поступить правильно… Велосипедить мы все горазды


Офлайн
25
ChocoboТогда - лучше все-же некое http-api (но это мое мнение) - просто отдаете клиентам кусок данных (можно их gzip-нуть еще чтоб кусок быстрее по сети пролез, размер куска выбираете по-больше, чтобы они часто за ними не лазили), а уже фильтрацию и поиск делаете на клиентах. Каждой клиент запоминает, когда и сколько он получил данных, и периодически, просто опрашивает сервак на предмет новых, в этом случае - просто отдаете им только новые записи.
android и Win-системах
Отредактировано s0rg (Окт. 8, 2014 17:29:21)
Офлайн