Click here to Skip to main content
15,886,551 members
Please Sign up or sign in to vote.
4.56/5 (3 votes)
See more:
Hi My company has Desktop application developed in vb.net using devexpress controls. Back End database is MySQL.
Company is in retailing and have 2 retail stores in in same city. Both stores always stay busy and customers are always in waiting at the counter. Basically, it is desktop based CRM application which has lot of modules inside it apart from invoice/Receipt module, it has other modules like Delivery module, installation module, Service/Repair module, Account Receivable module and many other modules used by various back office departments of the company. Other resources/hardware such as Barcode Printer, Receipt Printer, and Barcode scanner are connected to the CRM on Desktop PC.
Currently, there are around 55 clients always connected to server and using application.

Problem:
Till couple of weeks back, company had no issue using this desktop application and single MySQL server as all clients were connected via LAN or WLAN.
Now situation has changed, and new requirement has raised: Company has planned to open new stores at very far distance. Such stores cannot be connected to current central database via LAN or WLAN. Each new branch would have around 20-30 clients, say “Branch Clients”
Also, there would be field executive who will be working from their laptop. Say “Remote Clients”. They will just have 3G internet connection on their laptop.

Thought 1: Install desktop application at all branch PCs, and connect them to central MySQL database server over the internet.
Not possible: Connection over the internet would be very slow for fetching such huge data. Data is really huge For, e.g. if client opens “Customer Master”, then there would be more than 600,000 rows which takes lot of bandwidth and time to open over the internet. And there are many more such modules which loads lot of data.
Also, in case of losing internet connection, clients would not able to operate the application. Customer waiting in line to make receipt would go crazy if they have to wait for long.

Thought 2: Install new MySQL server at branch store, all the desktop PCs then would be connected to that local branch server. And then that local branch server would be connected to central server via MySQL replication option.
Not possible: Since MySQL replication has limitation of only one way replication, we cannot implement this structure. Application requires to move data from central server to branch server and from Branch to Central in real-time. Also, MySQL replication engineering has limitation to replicate only with one server only. In that case, we cannot replicate with multiple branch stores. There is an option of cluster server, but company cannot afford licensing cost.

Thought 3: Somebody suggested me that I should transfer entire desktop application into Web Application and get cloud server for database.
Not possible: I think looking at current requirement (fast access), environment (retail store-pos) and hardware (printers, scanners) connected to client - it is not advisable to have web application and cloud database server. Also in the event of no internet, entire store would go down.

Thought 4: Somebody suggested me that I should move from MySQL server to MSSQL and keep desktop application as it is. MSSQL has capability to sync with multiple servers in real-time over the internet. It has no limitation like MySQL’s one way replication and only one replication connection.

I guess, to make faster and constant database connection, installing local branch server is highly required. But I don’t know how those different branch servers could be connected to central server.
My Questions:
• What is the best way to resolve above issues in given condition and successfully fulfill the company’s requirement? Faster and constant connection to database server. And also real-time updates between all branches and central server. If internet connection is down, then delay in real-time update is acceptable but clients should not be affected from work.

• Would migration from MySQL to MSSQL resolve the issue? Because data migration is not issue as there are many tools available which converts the database from one platform to other. But issue is - application is very huge having hundreds of query written for MySQL. I guess I have to change those all queries also, because queries are not same for MySQL and MSSQL. Do I have to change all the queries or just the few percentage queries? Or if there is any tool available which convert queries from MySQL to MSSQL query.

• In general, how such small-medium retail store company have their infrastructure and application setup? Let me know some ideas.
Posted
Comments
Maciej Los 4-Jan-14 13:17pm    
In my opinion, at this moment, the best solution is solution 1, but some part of application need to be updated, because of that statement: "there are many more such modules which loads lot of data", but the depth of changes is depending on count of transactions and model of commodities distribution...

I advise you against changing MySQL to MSSQL right now. An issue will be the same. This functionality can be done in a future.

There's another option here you may not have considered...

Install virtual machines on a network, have the remote locations remote-desktop into them. This way the data is local, queries will be very fast, and all maintenance of the system is done in one central location. The branches will just be thin-clients (basically a computer with a network connection). Or, instead of using virtual machines, you could set up a single server and give each branch an account. When they log in remotely they can launch the POS/ERP system and do whatever they need to.

This solves a lot of problems, not just what you wrote, but for example, upgrading the software, maintenance of the system, replacing equipment is as simple as getting a new thin-client, etc.
 
Share this answer
 
Comments
Christian Graus 4-Jan-14 18:08pm    
This basically involves passing not just data, but the entire application, including all screens, across the network. It has the issue he raised with a web solution, if the network goes down, everything stops working. The only difference is, a VPN is slower :-)
Ron Beyer 4-Jan-14 18:14pm    
I'm saying remote desktop, which can be pretty effective over the internet (I do remote diagnostics on systems that have dial-up connections, screen images are compressed and sent, nothing else). Network connectivity issues can easily be solved with a dual-mode router (primary and backup connections) and aren't that expensive. If they are that concerned about network connectivity they should have one anyway.

I know when I worked for a major retailer, if they lost the connection to the "home office" they could not process transactions locally.
Christian Graus 4-Jan-14 18:24pm    
It depends on your internet connection. Mine is not super slow, but not super fast, and remote desktop for me was super slow and a nightmare.
Member 10502967 8-Jan-14 0:28am    
yes, if internet is down then application would go down too.
Remote desktop from hundreds clients would make central server and bandwidth extremely slow as it transfers entire GUI screen also.
Remote locations are not home offices, but they are actual retail stores.
There would be many POS (PCs) at one store and many more such stores.
all making remote desktop connection would not resolve the issue.
Also, its GUI and various inputs like keyboard,mouse, barcode scanner, and receipt Printers would be very slow too.
Move to SQL Server, it's better. Most queries should work. There are no tools to help you, though.

I would store data locally, and send it to a central server in an overnight process. It would allow you do to thought 2, which is the sensible option IMO.
 
Share this answer
 
Comments
Member 10502967 8-Jan-14 0:25am    
"send it to a central server in an overnight process" would not make it real time.
Organization wants update in real time at central office.
Christian Graus 8-Jan-14 16:25pm    
Then they want an online solution, there's no other way to do that. Ergo, you need an online solution that can store transactions locally if the network goes down, and sends them when it's back up

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900