Russian Qt Forum

Qt => Базы данных => Тема начата: 8Observer8 от Сентябрь 17, 2014, 19:33



Название: SQLite. Круглосуточный сбор данных
Отправлено: 8Observer8 от Сентябрь 17, 2014, 19:33
Привет!

Для опыта делаю некоммерческое приложение для сбора данных. Каждый день автоматически будет создаваться новая таблица в базе данных. Потом оператор через календарь сможет посмотреть историю "Дата/Время" и "Значение" за указанный день.

Впервые делаю подобное приложение. Какие подводные камни меня ожидают? Возможно, программа будет работать на сервере годами (скорее всего, на Linux). К ней будет удалённый доступ.

Для текущей таблицы решил выбрать QSqlTableModel. Сколько таблиц я смогу создать в одной базе данных? Может лучше, чтобы каждый месяц программа создавала новый файл .sqlite? Для того, чтобы случайно не удалили всю базу данных. А так только за один месяц пропадёт.

В общем, любые советы, предостережения и т.д. Буду очень рад :)


Название: Re: SQLite. Круглосуточный сбор данных
Отправлено: kibsoft от Сентябрь 17, 2014, 20:45
А зачем новая таблица на каждый день, что одной не хватит?


Название: Re: SQLite. Круглосуточный сбор данных
Отправлено: Hrundel от Сентябрь 17, 2014, 22:34
Начни с чтения книг по базам данных, "Новая-таблица-каждый-день".


Название: Re: SQLite. Круглосуточный сбор данных
Отправлено: OKTA от Сентябрь 17, 2014, 23:03
Для начала тебе надо выбрать СУБД. Иначе если ты будешь делить на файлы, то как поиск осуществлять и следить за всей этой кучей барахла? А так это можно свалить на СУБД.
И sqlite для подобных задач не подходит - уж лучше MySql, раз идея о линуксовом сервере. Sqlite это так, для мобильных приложений и программулек, которым надо хранить данные, но не для программы, которая собирается работать годами)
И да, почитай о БД, СУБД и всей это лабуде  :D.. создавать новую таблицу каждый день - это, простите, не комильфо, если мягко сказать  ;D

Для начала хватит))


Название: Re: SQLite. Круглосуточный сбор данных
Отправлено: 8Observer8 от Сентябрь 18, 2014, 07:54
А зачем новая таблица на каждый день, что одной не хватит?
Я подумал, что так лечше будет, если я хочу выводить данные на экран в виде таблицы (в которую добавляются новые строчки каждые 4 секунды). И удобнее для выбора таблиц для просмотра.

Начни с чтения книг по базам данных
Что посоветуешь?

И sqlite для подобных задач не подходит - уж лучше MySql
Попробую MySql. Вот эта инструкция подойдёт? http://qt-project.org/forums/viewthread/41828/


Название: Re: SQLite. Круглосуточный сбор данных
Отправлено: kibsoft от Сентябрь 18, 2014, 09:46
Я подумал, что так лечше будет, если я хочу выводить данные на экран в виде таблицы (в которую добавляются новые строчки каждые 4 секунды). И удобнее для выбора таблиц для просмотра.
Одна таблица, в нее пишутся данные, а показывать потом через QSqlQueryModel <-> QTableView, т.е. будешь делать SQL запрос на выборку данных за нужный день.


Название: Re: SQLite. Круглосуточный сбор данных
Отправлено: 8Observer8 от Сентябрь 18, 2014, 10:34
Цитировать
Одна таблица, в нее пишутся данные, а показывать потом через
Как думаешь, стоит это переделовать на MySQL? Или отдать человеку с SQLite? Ему уже программа нужна. С одной стороны сделал тяп-ляп побыстрому - работает и можно уже использовать. А с другой может сделать сначала по-нормальному на MySQL, а потом отдать? Но время идёт...


Название: Re: SQLite. Круглосуточный сбор данных
Отправлено: Bepec от Сентябрь 18, 2014, 11:36
Вспоминается история про Васю и Петю.
Когда Вася писал и правил программу, желая её довести до совершенства и только потом продавать, Петя продавал программу с ошибками, принимал жалобы и исправлял.

В конце у Васи 2 покупки программы, потому что о ней никто не знает, а у Пети обширная база клиентов, свой дом и хорошая репутация.


Название: Re: SQLite. Круглосуточный сбор данных
Отправлено: OKTA от Сентябрь 18, 2014, 11:37
Синтаксис везде одинаковый - что sqlite, что Mysql - вся запарка в том, что Mysql надо на сервере настраивать.


Название: Re: SQLite. Круглосуточный сбор данных
Отправлено: 8Observer8 от Сентябрь 18, 2014, 11:47
Цитировать
Вспоминается история про Васю и Петю.
Мудрая легенда :) Вася - крайность, а Петя - середина :)

Цитировать
вся запарка в том, что Mysql надо на сервере настраивать.
Простейший пример для начала бы сделать. Кстати, у меня такая штука есть. Этот эмулятор (если можно так сказать) Можно его использовать?

(http://i7.pixs.ru/storage/5/5/6/359png_3393776_13883556.png)


Название: Re: SQLite. Круглосуточный сбор данных
Отправлено: kibsoft от Сентябрь 18, 2014, 16:40
Для тестов у себя можно, а на серваке, конечно, кроме MySQL ничего не нужно.

Цитировать
Этот эмулятор (если можно так сказать)
Это никакой не эмулятор, а просто набор инструментов для быстрого развертывания веб-сервера. Например, Denwer еще есть.


Название: Re: SQLite. Круглосуточный сбор данных
Отправлено: OKTA от Сентябрь 18, 2014, 16:44
Не переживай - главное программу написать. Настроить MySql совсем несложно. Да и настраивать не так много придется - создать БД, настроить подключение, определиться с бэкапами и все, а об этом миллиард статей.


Название: Re: SQLite. Круглосуточный сбор данных
Отправлено: 8Observer8 от Сентябрь 19, 2014, 21:39
Цитировать
Не надо эти нетто, брутто. Вообще выбросьте их из головы. Есть весовой терминал. Он показывает значение. Бабушка записывает. Тачка заехала с цементом, записала вес, время. Когда эта тачка выгрузит цемент и заедет на весы, бабушка запишет вес тачки пустой. Потом выйдет разница. Но это не важно.

Важно сейчас удаленное наблюдение за честностью бабушки, т.е. правдивость этих двух значений для данной фуры. Будет удаленный доступ на ПК, к которому через вирт. ком-порт подключен терминал. В любой момент времени проверяющий сидя в офисе может зайти на этот ПК (который желательно работает на Linux, чтобы за Винду не платить) и посмотреть когда какой вес был. Ему нужно проверить только вес в такой-то момент времени, т.е. посмотреть историю взвешиваний. Считаем, что он сверится со своей бумажкой в которой указано какая фура когда приезжала. Т.е. для программы ТЗ идеальное на данный момент времени:

1. Ведет историю взвешиваний.
1.а)  0 не повторяет в логе.
1.б) когда начинается взвешивание заносит значения каждые 4 секунды. Оператор сам затем посмотрит получившееся точки и вычислит среднее значение (может оказаться, что весы не будут колебаться, тогда еще проще)
2. Постоянно сохраняет результаты, чтобы при внезапном отключение питания результат сохранился.
3. Возможность в любой момент посмотреть историю взвешиваний.
4. Работает постоянно/круглосуточно/7ДнвНед
5. Работает в Линухе

Я думаю, тут SQLite хватит для начала.


Название: Re: SQLite. Круглосуточный сбор данных
Отправлено: 8Observer8 от Сентябрь 19, 2014, 21:45
Текущее состояние. Поставил Linux Mint 13 на виртуальную машину (Virtual Box). Поставил Qt 5.3.2 по этой инструкции: https://qt-project.org/wiki/Install_Qt_5_on_Ubuntu Правлю проект с целью получить исполняемый файл для Linux.

Будем выводить только текущее значение веса и дату\время. Программа сохраняет в файл .sqlite. Этот файл можно будет просматривать каким-нибудь QSLite-менеджером, например, этим: ссылка (http://"https://addons.mozilla.org/en-US/firefox/addon/sqlite-manager/?src=")


Название: Re: SQLite. Круглосуточный сбор данных
Отправлено: Hvzh от Октябрь 28, 2014, 12:58
Основной подводный камень - пункт 1.б