Replies: 7 comments 18 replies
-
I wanted to add. Currently using the sqlite database I had a person attempt to use it via a cloud location and the database connection was lost at one stage. If the connection is lost during the middle of substantial operations - e.g. such as shifting codes, merging, codes, merging categories etc, then the part completed operation would essentially wreck the coding of some of the data. I think it is probably better for someone to fork the code and develop with a multiuser database, such as Mysql. Taguette does this. I have used Mysql but it's not easy to set up unless installing with WAMP or similar. But I am not confident with this level of development and will leave that to others. Also, as changes are made, then these changes would have to be somehow pushed out to other concurrent users. |
Beta Was this translation helpful? Give feedback.
-
This approach would probably already solve our main problem. We tried collaborating in QualCoder in a OneDrive folder and it created a new database each time we worked simultaneously or had any sync errors. This resulted in a project that was corrupted beyond any recovery after 2-3 times. For us, it would be great to have a way to work with different coders simultaneously. Maybe a way to achieve that would be to have each coder working on a different project or in a different database that is treated as part of one umbrella project. Alternatively, the databases could be merged by the lead researcher when everyone is done, probably with a manual switch or a merge function. Would this be possible in sqlite? |
Beta Was this translation helpful? Give feedback.
-
I had a quick look: Neither MAXQDA nor ATLAS.ti (Desktop) allow concurrent access to the same project. This is even the case if you use the "ATLAS.ti project cloud". Only the online version of ATLAS.ti seems to allow multiple user working on the same project at the same time. |
Beta Was this translation helpful? Give feedback.
-
@ccbogel: What do you think, should I try to implement the 'lock file approach' described above and make a pull request? I could also include some safety measures like creating an automated backup before 'dangerous' actions like merging codes/categories, etc. |
Beta Was this translation helpful? Give feedback.
-
@kaixxx there is this inormation also if useful: |
Beta Was this translation helpful? Give feedback.
-
I’ve now implemented the lock file approach and it is working very well. See here for details: 0e77eb8 Unfortunately, the backup solution I proposed earlier turned out to be more problematic than anticipated. Technically, there is nothing wrong with it. However, further testing revealed that it can significantly slow down QualCoder, especially when dealing with a large corpus of data or when used over a slow network drive. Consequently, I have concluded that this approach is not very practical. This is somewhat frustrating, given the amount of time and effort I have invested in this functionality. Anyhow, this is how we learn… Good news: I found a better solution. SQLite comes with its own mechanism for maintaining database consistency, even if an error occurs in the middle of a complex operation. This feature is known as "atomic commits," as described in this document: https://www.sqlite.org/atomiccommit.html. (This might be well known to you, but it was new to me.) My plan is to go through the code to identify other operations that need adjustments to align with the 'atomic commits' pattern. I will then delete my 'temporary backup' implementation, as it's no longer necessary. Is that OK with you? Afterward, I intend to create a pull request for the entire change, as well as a separate one for the wiki. |
Beta Was this translation helpful? Give feedback.
-
Hi. "Unfortunately, the backup solution I proposed earlier turned out to be more problematic than anticipated. Technically, there is nothing wrong with it. However, further testing revealed that it can significantly slow down QualCoder, especially when dealing with a large corpus of data or when used over a slow network drive." Yes I have done different things over time and found they did not work as intended. Lots of work to learn something. OK - I knew MySQL had this function, as not aware of it in Sqlite. |
Beta Was this translation helpful? Give feedback.
-
In another discussion (#875), the question about possible improvements in the collaboration features in QualCoder popped up. I think this is an important topic that deserves its own thread.
@MicRaving:
The current way of collaborating on a project (as described in the wiki: https://github.com/ccbogel/QualCoder/wiki#collaboration-on-a-qualcoder-project) comes down to: Only one person at a time can work on a project, the project files have to be manually exchanged via email or other means.
This is a little cumbersome, but also has a lot of advantages: QualCoder doesn’t need any centralized database server, which makes it very easy to install and use and is also a big plus for data privacy (see the statement of @ccbogel here: #875 (comment)).
To keep these advantages but also improve the collaboration, I would suggest the following approach:
portalocker
can be used to manage these lock files – even with a timeout, so that the lock is automatically released if the first instance crashes or looses network connectivity (https://portalocker.readthedocs.io/en/latest/).@MicRaving, @ccbogel: What do you think about this approach? A project would still be accessible only by one person at a time. But the whole sharing process would be much easier and safer since no files have to be send back and forth via e-mail.
Be aware though that this is not going to work in a cloud-based shared folder like dropbox. The problem is that the lock file is not going to be shared instantly, so it would still be possible that two people access the project at the same time.
Beta Was this translation helpful? Give feedback.
All reactions