I've a multi-user supporting server
which is based on qxmpp
library written in Qt
and exdended by inheriting QXmppServerExtension
. So, my question is: Considering multi-user support in my server, whether it's safe or not to use a Singletone class for database connection and holding a connection for QSqlQuery?
Since, all the extensions that work via database use it respectively.
Database connection in Singletone
111 Views Asked by elgolondrino At
1
There are 1 best solutions below
Related Questions in C++
- ActiveJDBC with multi-tenant DB structure
- defineClass for ActiveJdbc Model throw exception
- How to delete record in activejdbc with no primary key?
- ActiveJDBC Many2Many with child table in different schema from parent and join tables
- Limiting Columns Selected with ActiveJDBC
- Getting records with offset and orderBy in activeJDBC
- ActiveJDBC - how to define models
- Unit testing activejdbc code without live database
- ActiveJDBC Instrumentation: Unable to instrument the model classes which are in Jar
- ActiveJDBC instrumentation in ActiveJDBC 3.0 for Java 17 takes too long in big models
Related Questions in QT
- ActiveJDBC with multi-tenant DB structure
- defineClass for ActiveJdbc Model throw exception
- How to delete record in activejdbc with no primary key?
- ActiveJDBC Many2Many with child table in different schema from parent and join tables
- Limiting Columns Selected with ActiveJDBC
- Getting records with offset and orderBy in activeJDBC
- ActiveJDBC - how to define models
- Unit testing activejdbc code without live database
- ActiveJDBC Instrumentation: Unable to instrument the model classes which are in Jar
- ActiveJDBC instrumentation in ActiveJDBC 3.0 for Java 17 takes too long in big models
Related Questions in QTSQL
- ActiveJDBC with multi-tenant DB structure
- defineClass for ActiveJdbc Model throw exception
- How to delete record in activejdbc with no primary key?
- ActiveJDBC Many2Many with child table in different schema from parent and join tables
- Limiting Columns Selected with ActiveJDBC
- Getting records with offset and orderBy in activeJDBC
- ActiveJDBC - how to define models
- Unit testing activejdbc code without live database
- ActiveJDBC Instrumentation: Unable to instrument the model classes which are in Jar
- ActiveJDBC instrumentation in ActiveJDBC 3.0 for Java 17 takes too long in big models
Related Questions in QTCORE
- ActiveJDBC with multi-tenant DB structure
- defineClass for ActiveJdbc Model throw exception
- How to delete record in activejdbc with no primary key?
- ActiveJDBC Many2Many with child table in different schema from parent and join tables
- Limiting Columns Selected with ActiveJDBC
- Getting records with offset and orderBy in activeJDBC
- ActiveJDBC - how to define models
- Unit testing activejdbc code without live database
- ActiveJDBC Instrumentation: Unable to instrument the model classes which are in Jar
- ActiveJDBC instrumentation in ActiveJDBC 3.0 for Java 17 takes too long in big models
Related Questions in QXMPP
- ActiveJDBC with multi-tenant DB structure
- defineClass for ActiveJdbc Model throw exception
- How to delete record in activejdbc with no primary key?
- ActiveJDBC Many2Many with child table in different schema from parent and join tables
- Limiting Columns Selected with ActiveJDBC
- Getting records with offset and orderBy in activeJDBC
- ActiveJDBC - how to define models
- Unit testing activejdbc code without live database
- ActiveJDBC Instrumentation: Unable to instrument the model classes which are in Jar
- ActiveJDBC instrumentation in ActiveJDBC 3.0 for Java 17 takes too long in big models
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Popular # Hahtags
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
You can read more about singletons in general why they are considered bad in many cases:
What is so bad about Singletons?
I would personally avoid them in your without the context more. The only reason you bought up so far for singletons rather than passing references or that kind around, you would spare some memory for the server service.
Based on the discussion, it is always better to make sure you have some benchmark in place when the complexity difference is not obvious. In your special case, with additional 216K memory for about 1000 clients, you would get about 250 MB additional memory usage.
I am rounding this number up a bit just in case. This is in no way comparable to the capacity of your server which seems to be about 16 GB. If you have other memory hungry services, those would probably be a more offending place to look into optimization.
That being said, if you wish to go for singletons, you could implement that on top of the Q_GLOBAL_STATIC or Q_GLOBAL_STATIC_WITH_ARGS macros in Qt. Note that this was also public in Qt 4, although undocumented. As far as I know, it did not have proper thread-safety in Qt 4 though which was significantly improved in Qt 5.