|
just another regularban.info web blog |
| MEMBERS: | Efficient SQL Databases
Don't be fooled by seeming simplicity. A lot of developers get comfortable with a certain way of designing a database for their web applications that they miss out on techniques they should rather employ to make things run faster and more efficiently. A lot of developers don't bear in mnd that the small site they are creating now might grow into something incredibly large and complex, and the database they designed has become bloated and doesn't scale well to meet the demands of the increased traffic. This article hopes to provide web developers with a few techniques to help make their database and queries faster and more efficient. 1. Avoid Character Types When you are designing a database, it is so easy to set all data types to the VARCHAR type as it can then contain any data you want; numbers or text. But character data is amongst the most inefficient data type you can get. If a field is only going to contain numbers, then make it one of the appropriate types (INT, DOUBLE, etc). Also, wherever possible in your web development code, try to use numeric data types as opposed to characters. One of the most common things a script has to store are flags like whether someone answered yes or no to a question, etc. You could of course store it as 'Y' or 'N' but why not store it as 0 and 1? The reason this makes a difference is when you have a database, for example, with over 500 000 entries, and are running a SELECT on that field, comparisons are processed a lot faster for numeric data types than character types. Also, if you need to return data to the calling script, numeric data is less memory intensive than character data. In addition, your web development language (PHP, ASP, etc) would also be able to process and perform functions on numeric data better than character data. I am not trying to convince you never to use character data types. Sometimes it is a necessity, but if you can find ways to reduce the amount of character data processed by your SQL database, the better your server will cope. 2. Normalization Normalizing a database is really quite a complex process. It is a process that describes a way to design a database structure to avoid repetition of data in your database and can lead to significant performance benefits if employed correctly. However, the entire process of normalisation is a bit beyond the scope of this article as it can fill books on its own, but any developer designing a database should seriously consider becoming knowledgable about normalisation and employing it in their own designs. For a good tutorial on this process: http://www.keithjbrown.co.uk/vworks/mysql/mysql_p7.php 3. DateTime vs Timestamp fields This actually relates to 1. a bit. The big difference to bear in mind here is that a field of type DATETIME is actually stored as a series of characters. A field of type TIMESTAMP is actually stored as an integer. So therefore, a more efficient way of storing dates is using the timestamp method. The timestamp has its drawbacks however. For one, you cannot store a date early than 1 January, 1970. Also, timestamps in your script will need recalculating to get to the character format. Because of this recalculation, it may not be better to store as timestamp. It really is a case of testing which format works better for your needs. 4. Use LIMIT where possible In your queries, if you are doing a SELECT to a database and you only expect a certain number of results, using the LIMIT statement can speed your query up incredibly. For example, if you have a table of users and you need to run a query to search for one users record, you can use a query like: SELECT user_name FROM users WHERE user_id = 453; This query is perfectly valid and will return the right result. But you also know there will only be ONE result. The query above will search the database, find what you want, but then still continue searching after that. It would run a lot faster if you could tell the query that once it has found what you are looking for to stop searching. LIMIT can do this, as this query shows: SELECT user_name FROM users WHERE user_id = 453 LIMIT 1; Imagine this scenario. You have a table called logins, that records every login from a user. It currently contains over 2 000 000 records, and you want to find the first time a user logged in. Now bear in mind that because this table inserts data over time, it is already sorted for by date. You could do the following query: SELECT MIN(login_date) FROM logins WHERE user_id = 4876; This will return the record you want, but SQL will now have to get all dates for that user, sort them and then return the lowest value to you. Our table is already date sorted simply because of the way it records data for us. So using LIMIT can be more effective: SELECT login_date FROM logins WHERE user_id = 4876 LIMIT 1; Because it is sorted, the first one will always be a users first login. 5. Avoid using LIKE If you have tried to employ 1. above, then hopefully you will be in a scenario where you do not need to use LIKE all that much. LIKE is one of the most inefficient ways of searching a table. LIKE performs a text comparison search in a field and with no wildcards is as efficient as a direct comparison; i.e. WHERE name = 'Jane' is equivalent to WHERE name LIKE 'Jane'. It is when you start introducing the wildcard characters like '%' that things get really hairy. If you do have to use LIKE, then at least try and make efficient use of the wildcards. These are '_' (underscore) and '%'. Let me explain all this with a real world example. In a project I was involved in, we had a SQL database storing logs generated automatically from a mail server. Unfortunately, the mail server pretty much just dumped a very long string of text data into a field that contained the data we wanted. A script had to be written to find all logs that referred to a login by a user into the POP server. The only way we could do this was to search every record for a string in the msg field that had the text "User logged in" in it. The first query developed was something like this: SELECT msg FROM logs WHERE msg LIKE '%User logged in%'; This query took on average of about 35 minutes to process. Obviously not an ideal situation. The way the LIKE worked here was that it had to parse through every single portion of each and every record in the msg field looking for text that matched "User logged in" anywhere in the text. We were able to determine eventually that the text "User logged in" occured at the end of that text in the msg field and so we altered the query: SELECT msg FROM logs WHERE msg LIKE '%User logged in'; The '%' at the end was removed as we do not want to worry about text after because there is none. The query now only compares text to our string in the msg field at the end of the field and no longer parses through the entire piece of text stored in msg. The query now ran in under 2 minutes. (This was actually still too long, but how we optimised from there is a little beyond the scope of this article.) Hopefully with all these elements put into practice on your next web development project, you can have a database that runs quickly, efficiently, uses as little resources as possible and wont grind to a halt when the load suddenly increases.
Are You Vying For Open Source Web Development?
Web development encompasses various activities related developing a website. The importance of building a web presence in today's times is immense, triggering rush by people and organizations to own websites to make themselves visible on the internet. This in turn has driven the need for web development software and tools that give competitive advantage to its users. Now the ubiquitous questions are • How expensive is web development? There are a wide variety of web development products being sold by different vendors that cater to all your web development needs. But they do come at a price and often we are either not in a position or simply not willing to pay the price. We are always looking for a cheaper alternative. Better still - Can we get it for free? Yes, we can - The same features and facilities as commercial web development software are available for free as feature rich Open source web development tools. Open source software offers us several advantages the most important of which are - • The software comes free of cost. Are you someone who is vying open source web development? Since web development is such an important and strategic area the need for open source software is even more important. This gives you freedom for creativity and experimentation while not denting your pocket with huge expenses. FORTUNATELY there are loads of free open source web development tools and software available that can satiate the need for a great looking web site by getting you the right tools to build it for free. Here are some open source web development products one can try: • Aptana 0.2.7 - An html/JavaScript editor intended for development of dynamic web applications. It provides integrated java script debugging and is excellent tool for ajax development. Go Ahead, Try these wonderful open source web development tools and build your dream website now.
How To Lay The Foundation For A Good Website
So you are passionate about a particular subject and you want to take your passion online. At this point you may not know where to start and this is where I hope I can help you. After all you deserve to share your passion with others and they will benefit from it also. The key to building any website is to build it with your visitor in mind. What can you truly do for them that will add value to their experience when visiting your site? Let's take for example that you enjoy building model planes. The first place you are going to visit is the online forums. The reason I choose forums is because this is where conversations take place relative to any given topic. This will give you a measure of interest. The first step is to see how up to date the forum is and secondly how many posts it receives per day. Additionally how many people respond to those posts on any given day? Obviously the more the better, the more interest the better for you. The next thing you are going to look for is, what are the questions being asked and can you engage in the conversation and offer solutions. If this is the case your next task is to look for keywords. What keywords do people use to seek out solutions for their needs? The next thing to do is look for a keyword tool. I am going to use Google's keyword tool for this example. Keyword tools by the way are not by any standard of the imagination an exact science. They give you a rough guide as to how many times a given keyword is searched. So do not think that the numbers you get are exact. Your task right now is to develop a list of keywords. Once you have this list you are now going to look at the level of competition. Starting out we do not want too much competition but remember competition is good as it means there is money to be made in that market. We at this point are just looking for cheaper ways to enter the market. To do this enter your keyword into the search box in quotes. Then check how many websites are coming up for that keyword. If it is in the millions that is not good if it is in the thousands then that is great. You will now be refining your list based on competition. Once the list is completely refined you will now have the general structure of your site. These keywords will make up individual web pages. To conclude this is how to lay the foundation then once you have these keywords you will be ready to structure each of the pages on your site using each individual keyword with content relative to that. To learn how to put all this together select any of the links provided.
|
* About Archives
Categories:
Last Updated: |
| regularban.info
is proudly powered by WordPress MU running
on regularban.info.
Create a new blog and join in the fun! Entries (RSS) and Comments (RSS). |
blackhatseotoolsmentor
blackhatseotoolsmentor
blackhatseotoolsmentor
blackhatseotoolsmentor
blackhatseotoolsmentor
blackhatseotoolsmentor
blackhatseotoolsmentor
blackhatseotoolsmentor
blackhatseotoolsmentor
blackhatseotoolsmentor
blackhatseotoolsmentor
blackhatseotoolsmentor
blackhatseotoolsmentor
blackhatseotoolsmentor
blackhatseotoolsmentor
blackhatseotoolsmentor
blackhatseotoolsmentor
blackhatseotoolsmentor
blackhatseotoolsmentor
blackhatseotoolsmentor
blackhatseotoolsmentor
blackhatseotoolsmentor
blackhatseotoolsmentor
blackhatseotoolsmentor
blackhatseotoolsmentor
blackhatseotoolsmentor
blackhatseotoolsmentor
blackhatseotoolsmentor
blackhatseotoolsmentor
blackhatseotoolsmentor
blackhatseotoolsmentor
blackhatseotoolsmentor
blackhatseotoolsmentor
blackhatseotoolsmentor
blackhatseotoolsmentor
blackhatseotoolsmentor
blackhatseotoolsmentor
blackhatseotoolsmentor
blackhatseotoolsmentor
blackhatseotoolsmentor
blackhatseotoolsmentor
blackhatseotoolsmentor
blackhatseotoolsmentor
blackhatseotoolsmentor
blackhatseotoolsmentor
blackhatseotoolsmentor
blackhatseotoolsmentor
blackhatseotoolsmentor
blackhatseotoolsmentor
blackhatseotoolsmentor
blackhatseotoolsmentor
blackhatseotoolsmentor
blackhatseotoolsmentor
blackhatseotoolsmentor
blackhatseotoolsmentor