Best Way to Implement a Versioning System for User Edited Content - mysql

I have a requirement to let users edit each others entries. So in case of bad entries, I need to be able to go back to an earlier version.
What is the best way to implement this in the data layer? Should I have like a triage table? And once the admin approves the edit, the triage version gets copied and put into the main entries table?
How would you guys do this?
Thanks,
Alex

This answer may work for you.
Rolling Your Own Plaintext Wiki (Wiki inside a DB)

I know you're thinking in terms of a database, but you may want to look in to using Mercurial or Git as the back-end to your application. It won't work like a database, but you'll have full version control.

Related

Where to find mysql logs regarding user changes in phpmyadmin

I want to know, is there a log that saves all the changes made by users to a database just like in git where all the commits can be viewed by each user so that if any error occur we know who did it.If there is one how to get it? or how to create one that will do it?
Problem I'm facing is that a table's data has been altered by one of the developers but there is no way to find when and who did it and also I am struggling to find all the changes that has been done to the table.
Databases typically do not provide auditing as standard. I typically implement it within my application. However, for a faster result, there are some plugins for mySQL which you could try.

Searching Sharepoint/Access - Update table

I have been working on a sharepoint search tool. I know very little about sharepoint so if anyone can point me in the right direction it would be greatly appreciated.
I have a number of tables on a sharepoint site. One of the tables contains the "People" in the database. I have the ability to view this table as a linked table using access, but my coworkers do not have the permissions to do so. My way around it was to use a make table query insert a table into a shared folder and give them read only front end in access to search for the client and when they find them open up a hyperlink to the person on sharepoint. The search feature works great, but I have to manually update the local table (using make table) (which I am not able to do if someone is using the search).
As I see it there are two ways I might be able to solve this, but I am open to any ideas I am by no means an expert:
Is there a better way to search in sharepoint? - I am hoping to have something where they are able to enter in a first name last name dob etc and find the results that match the fields and allow a partial match (so if some fields aren't entered they are ignored). I have not found anything that was able to help me do this, but I do not know what it would be called so if you know what I should look into I would greatly appreciate it!
Is there a way to update the table in Access while someone is using it? Is there another way to accomplish this in access?
What direction do you think I should take? I am usually able to find the information I need online, but I have not had too much success with this.
Thank you!
http://root site URL/_catalogs/users/simple.aspx
This syntax will get you to your hidden user content type list on a SP 2010 site - and you can change the view on this to give you different fields. I haven't yet found a way for this to link to anything that gives me site/list/library access rights, but have found it EXTREMELY useful in place of anything approaching a third party central user administration tool. - You might be able to do something with this for what you're trying to do.

Yii2 Structure for Multitenancy System?

I am using Yii2 advanced structure, but I need a "Second" backend that is going to control the tenant users.
I just copy the backend folder and change the configuration for the cookies and the User Model. I don't know if this will be enough.
I just want some advice on how to do it, if someone already did it.
Thanks !
I have done something similar some time ago. Besides what you have done I have also changed the User component too to log in a different kind of user.
You should also add more folders in the tests so you can test that part too.
Anyway that should be enough yes.

whats best way to create documents Archive of images in the database's?

What is the best way to create an Archive of image documents in the database ?
Given we have about 2-10 million records and each record includes 2-4 images and about 20 text fields , what is the best way for create this archive so that we have good speed and high security for data?
Also, what database is good for this project?
Definitely use the file system as Minor suggested.
One option is SQL Server FILESTREAM. See http://msdn.microsoft.com/en-us/library/cc949109.aspx.
Use file system storage for archive image. You must save link in DB for the image file. And if you use a HTTP content you can use the cache proxy server such as Squid, Nginx, etc.
More questions for you:
How dynamic is the data? Do you store it once and never change it or it gets frequently changed?
Do you need versioning for the documents or the latest version overwrites the previous and that's it.
Are the documents always edited using one application or they can be changed outside (ex: using Word)
Are the documents related to other "non-document" data (database rows) or is it the only thing that you need to store?
File system won't offer any real security, so I would discount that straight off.
In Oracle there is built-in image support through the ORDImage type.
Check out Marcel's blog as he, and the Piction company, do a lot of work in this area and he has lots of useful material to download.
You can use control downloads. Look at http://kovyrin.net/2006/11/01/nginx-x-accel-redirect-php-rails/lang/en/

Best way to update products

Some background:
We provide a complex system consisting of a large database and several programs - most written in C#, however some legacy applications are still running on MFC.
Most of the stuff we provide runs on a single server (runs SQL server and SQL Management studio 2005), however several applications can run on a number of client's computers. Updating this is a real pain, since after we update the database the outdated software is likely to break due to database changes. Updating the server software manually is one thing, however making sure all the client software works too is practically impossible, and will only get worse with time.
I am to write an updating service, which will be able to update the whole product - update the database, reinstall services and applications. (However only the programs / files /tables / etc that are actually modified should be updated. Downloading the whole product each time there is a update available is not an option. Also, some computers may only have a subset of avaliable programs installed)
First of all is there a already a good way of doing this? If there is something similar to ClickOnce that would also be able to update databases already out there I'd much rather use that.
If not, what are the best practices when it comes to updating? All and any material will be greatly appreciated.
I will need some updates to be installed on the server ASAP after the updates have been submitted, without any user input. That includes a windows service (that is running at all times) and any database changes. After these changes have been made, I will have to prevent any software that is not up to date from either accessing the parts that have been changed, or from running at all.
Any advice will be greatly appreciated - If I do have to write a system like that, I'd like to do it right.
Best practice would be to package the app up in an MSI and use Group Policy to push the updates out to each client.
If that's not possible then you need some way of informing the client app that it is out-of-date (simple check against a server holding the current version number would probably suffice) and refuse to work until an update patch is downloaded and installed - you could even launch this process from inside the app itself.
This answer may help you, I haven't personally used Wix but this seems to be along the lines of what you're looking for. Make sure to check out Lesson 4 in the linked tutorial, as this provides the details you would require.
I'm not sure where you would find best practices when it comes to updating, but in my personal opinion you shouldn't ever force a user to update unless it breaks the underlying application (like yours does). I would be very interested to hear if someone has a link to a list of best practices on this topic.
Edit
I was interested in possible best practices for updating so I started another question thread here. The general consensus in the answers is "Ask the user/client", but there may be some other details in the answers which may help you, I'm afraid I can't find any actual hard rules on the subject anywhere (which I was expecting).