Needing help with designing a report manager app
-
Hi.
i want to design an application that manages a organization reports.
in organization, 4 clients (windows) must install this app and manuppilate reports and data.
i need help with design of application and what things i use to completely and very efficiently do the job.
i was thinking about using a server at organization with MySQL server installed and clients connect to server and do their job.
because i am new to qt , and only made qt applications on Linux , i am scaring that might MySQL driver on windows dos not install properly or something else on windows don't let app work good.
i need your help and suggestions about implementation of application.
thanks you a lot. -
@comet91-0
yeah agree, but i mean client might be problem , i use Linux for developing application and then deploy that on Windows.
(the operation system of MySQL Server is Linux.)is it safe to develop whole application on Linux and deploy it on Windows, yeah i know qt is cross platform and same code can run on other platforms, but i am worry about MySQL Driver problems on windows or compiling and linking app with MySQL.
-
Hi,
You will likely have to re-build the MySQL plugin to use the version you want to support of MySQL but that's pretty much all.
-
@realhamidrezakp said in Needing help with designing a report manager app:
i want to design an application that manages a organization reports.
This is very broad statement to say the least. What is a "report" and how does this application need to "manage" them. Is this just pulling data off a database, or is data going to be inserted/modified as well? Are there additional security requirements, is this going to run in an internal network? As you can see there's a lot of things to consider before you jump to the technical problems.
-
@kshegunov said in Needing help with designing a report manager app:
@realhamidrezakp said in Needing help with designing a report manager app:
i want to design an application that manages a organization reports.
This is very broad statement to say the least. What is a "report" and how does this application need to "manage" them. Is this just pulling data off a database, or is data going to be inserted/modified as well? Are there additional security requirements, is this going to run in an internal network? As you can see there's a lot of things to consider before you jump to the technical problems.
so sorry, the reports are some information about customers. app must be able to search and show information of a specific customer. and users can insert new data or modify preview data stored.
i wanted to make MySQL Server port open to internet so that users can access database from outside and inside of organization.
is there any security tip or trick other than securing MySQL Server i must consider ?
thanks you for your time. -
thanks, so you mean i must compile MySQL plugin for windows platform and qt version i use ?
I use released versions of MySQL, Qt & Qt MySQL plugin as they are consistent at the time. If you wish to move to, say, the latest version of Qt you are likely to have to compile. I stick with older versions, but that's up to you.
i wanted to make MySQL Server port open to internet so that users can access database from outside and inside of organization.
is there any security tip or trick other than securing MySQL Server i must consider ?Yes, this is a security "risk"! You can Google for e.g.
make MySQL Server port open to internet
to read up. The fact that you sayand users can insert new data or modify preview data stored
is a shame, especially if it's only supposed to do reports.
If you are really security conscious you can design to use a "report server" application which runs on the server and only it accesses the database in order to avoid opening up your MySQL (and making it run a lot faster). The server then delivers its results to clients over, say, http (i.e. a web page). But that's certainly a lot more work/design....
-
@realhamidrezakp said in Needing help with designing a report manager app:
i wanted to make MySQL Server port open to internet so that users can access database from outside and inside of organization.
What you probably want is a dedicated server application that talks to the MySQL through internal channel that's not open to the public. And your clients connect and authenticate before your server to get the information (what @JonB wrote). This is not without (development) cost, as you need to develop the protocol (if not using one ready-made), ensure that the clients talk to the server over a secure channel (read SSL) and authenticate the user either by password or by using dedicated security certificates (depending on the requirements).
is there any security tip or trick other than securing MySQL Server i must consider ?
The database should be open to a trusted party only.
-
The fact that you say
and users can insert new data or modify preview data stored
is a shame, especially if it's only supposed to do reports.
i call them wrong, they are some information that organization store about customers.
If you are really security conscious you can design to use a "report server" application which runs on the server and only it accesses the database in order to avoid opening up your MySQL (and making it run a lot faster). The server then delivers its results to clients over, say, http (i.e. a web page). But that's certainly a lot more work/design....
thanks, its a good idea ; what is your suggestion about server app design ?
you need to develop the protocol (if not using one ready-made), ensure that the clients talk to the server over a secure channel (read SSL) and authenticate the user either by password or by using dedicated security certificates (depending on the requirements).
thanks . can you suggest me some good protocol you think is suitable for my use ?
-
@realhamidrezakp
My only experience of server-side report generator is MS SSRS (https://en.wikipedia.org/wiki/SQL_Server_Reporting_Services), which supplies reporting facilities for SQL Server. Users go via a web page http interface to request a report to be run and to view the output. So the database itself is not exposed to the outside world, only the reporting service is.Like I said, "secure", but a lot more work to implement. I would imagine something similar might exist for MySQL....
-
@realhamidrezakp said in Needing help with designing a report manager app:
thanks . can you suggest me some good protocol you think is suitable for my use ?
I use my own messages built on top of JSON that I marshal as binary over TCP. Whether this is good for your case I can't say.
-
Thanks you @kshegunov and @JonB .
you helped me a lot. -
what is your suggestion about server app design ?
People usually refer to "server app" as "middleware" or "web application". There are tons of web frameworks and ORMs for various languages including Java and C# on "enterprise" side and scripting languages (pphp, python, perl, ruby, node.js). C++ is not really convenient language here. As for protocol, if you are not pursuing real-time data processing with lowest possible latency, it makes sense to use REST API on top of HTTP, so that on server side you have the most typical "web app" with ORM inside and REST outside, and on client side you can easily add web client if needed, and even if not, you get some additional convenience as compared to e.g. RPC over plain TCP