Racing Database Redesign - Part 2 - Implementation

Before I get on to talking about the actual database design (which will appear in subsequent posts) I wanted to expand on the technologies I'll be using to create the database and it's functionality.

I'm guessing many of those following this - assuming anyone is following this - will be interested in duplicating the database within a desktop database program such as MS Access. Much of what I'll be doing can be applied to any desktop database design application but I won't be doing so myself.

Although I have a lot of experience in designing MS Access databases and indeed, training others how to do so, I no longer use MS Access at home. I converted my systems to Linux many years ago and have no need to use MS Access, good though it is.

I'll be using a server based database system called MySQL. This is open source software and freely available to anyone. It is used by many large organisations as it is stable, fast, and very scalable. Granted, its enterprise level functionality is somewhat overkill for this small project but there are a number of reasons for going with it other than familiarity:

1. There's a number of things that need to be done automatically without user intervention from me. As my Linux server is on 24/7, it makes sense to use a server based database management system.
2. It will easily handle the number of records and data that I'm likely to through at it.
3. It integrates easily with a variety of programming languages and web technologies.
4. It has its own powerful database language in SQL which makes the process of storing, manipulating and querying of data a breeze.
5. It's easy to backup and transfer to other systems if need be.
6. As it is freely available with many web hosting providers if I ever decide to make it generally available as a service, it would be a relatively straight forward process of transferring that design to the Internet.

The second crucial element in the implementation of this project is the automation.

When the old Betfair API was functional my database used PHP scripts to provide a whole range of functionality from downloading the previous day's results from to analysing various strategies and placing bets in the market.

Those scripts that use the old API will no longer function and, if I was honest, I don't relish having to relearn much of PHP to fit in with the new API. PHP is such a cluncky language - especially for a non-programmer like me - that I'm sorely tempted to redo everything in Python. That means learning something new - which will be fun.

However, in order to get much of the functionality up and running as quickly as possible, the intention is to reuse the existing PHP scripts or modified version thereof which will give me time to learn what I need to learn of Python.

So in summary, the whole system will be hosted on an old Dell Dimension 5100 desktop with 4GB RAM and 250GB harddisk drive (The data going back to 2009 will be around 100MB if that).

It will be configured as a LAMP stack (Linux, Apache web server, MySQL database server, PHP/Python scripting language) in addition to its current role as a file and music server.

Next time, I get to the nitty-gritty of discussing the tables and how/what to store in the database.


Ray said...

Just to say there's at least me following this series of posts and my guess is there's lots more.

Alistair said...

Cheers Ray. Good to know I am not wasting my time.

Unknown said...

Same here Ray.

Good luck Alistair with your project.