Playing with the Amazon Relational Database Service

4. november 2009

In this post I will look at the new Relational Database Service (RDS) from Amazon Web Services (AWS).

This was supposed to be a short post, but ended up being huge! So good luck to anyone who wants to read it...

AWS offers a bunch of services ranging from simple data storage to full virtual servers. The common factor for all of them is that they are controlled using standard web services. This means that you can easily manage them programmatically if you want to. In this article I won’t focus on the management bit, but rather on how and why to use the service.

In all simplicity RDS is MySQL running on a virtual server somewhere in Amazons server farm. The service is a port of MySQL so if you can connect to a regular MySQL database you can connect to RDS as well. You also manage RDS the same way you would manage a regular MySQL server, you can connect to it using the standard tools and create databases and tables as you want.

In my opinion there are two scenarios where you would use RDS: Either you have an application using MySQL already running on a virtual server on Amazon EC2 or you have an application that needs to reach a MySQL database from anywhere on the internet. In the first case you can now host the database on a dedicated system instead of a custom virtual server. This allows you to easily scale the performance of your application by scaling up your database. In the second case you have a desktop application that needs to connect to a database while being connected to the internet. In that case you could host the database on your own server, but hosting it at AWS is guaranteed to offer better availability and much better bandwidth.

There are at least four obvious advantages to using RDS as compared to running your own server with MySQL:

  • High availability – AWS guarantees an uptime of at least 99.95%. Since it is hosted in Amazons server farm it will probably be much more available than most services.
  • Easy to upgrade – Using the management web services you can easily scale your RDS server using a single api call. This is much easier than even upgrading a virtual server.
  • Automatic backups – RDS will automatically backup your database and in addition you can set up your own backups if you need to.
  • Available anywhere – It is easy to configure the RDS firewall so you can make the database available in any way you need to.

But there are also some disadvantages to RDS:

  • You trust AWS with your data – Since AWS are hosting your database you also trust them with your data. In some scenarios this may be a problem.
  • You pay per hour – When using RDS you have to pay per hour your database is running. While the prices are quite reasonable they still accumulate over time. It will be cheaper to run your database on an existing server if you have one.
  • Limited bandwidth – Depending on your use this may not be a problem, but running your database on a remote server means that you connection will be limited to the capacity of your internet line.

Getting started with RDS

The first thing you need to get started with RDS is an account with AWS. It is free to sign up for AWS, but you must pay to use their services. Signing up is simple, especially if you have shopped at Amazon.com before. Sign up here: https://aws-portal.amazon.com/gp/aws/developer/registration/index.html

After you have signed up for AWS you need to create a digital certificate that identifies you. This is done in the Your Account -> Security Credentials page. To access AWS you need two keys – an Access Key ID and a Secret Access Key.

With your keys in place you are ready to connect to AWS and the RDS service. I’ll show you an example .NET application that manages your database instances later, but first we will use the management tools supplied by AWS. These tools are a bunch of Java command line applications, so you need the Java runtime installed to use them. The tools can be downloaded here: http://developer.amazonwebservices.com/connect/entry.jspa?externalID=2928&categoryID=294

Setting up the command line tools is relatively easy – just unzip the file and follow the instructions in README.txt. You should setup a text file containing your Access Key ID and Secret Access Key based on the template found in the zip file.

Now we are ready to create a server! First you should make sure everything works properly. Try to run the rds-describe-db-instances command. If the tools are properly set up it should return an empty list. The next command you should try is rds-create-db-instance. This is the command that creates your server. I used the following command:

rds-create-db-instance --db-instance-identifier MyTestServer123 --allocated-storage 5 
--db-instance-class db.m1.small --engine MySQL5.1 --master-username root --master-user-password Secret123

And I got the following response:

DBINSTANCE  mytestserver123  db.m1.small  mysql5.1  5  root  creating  1
      SECGROUP  default  active
      PARAMGRP  default.mysql5.1  in-sync

This gave me a small instance of a database server with 5 Gb of disk storage. The instance is named MyTestServer123 and is running MySQL 5.1.

Now if I run the rds-describe-db-instances command again I get the following result:

DBINSTANCE  mytestserver123  db.m1.small  mysql5.1  5  root  creating  1
      SECGROUP  default  active
      PARAMGRP  default.mysql5.1  in-sync

Note that it says creating. It can take a few minutes to setup a new server and you cannot access it before it is ready. Try running the rds-describe-db-instances command after a minute until you get something like this:

DBINSTANCE  mytestserver123  2009-11-04T11:50:21.554Z  db.m1.small  mysql5.1  5  root  
available  mytestserver123.cqpn2yka5vjx.us-east-1.rds.amazonaws.com  3306  us-east-1b  1       SECGROUP  default  active       PARAMGRP  default.mysql5.1  in-sync

Now the status should be available. You should also note the text mytestserver123.cqpn2yka5vjx.us-east-1.rds.amazonaws.com. This is the name of your server and you need it when you want to connect later.
Before you can connect to your server you need to open its firewall to let you through. This is done using the command rds-authorize-db-security-group-ingress. You must run it two times. First you must set the security group for your server and then you must allow your ip-address through the firewall to servers in that security group. Use the following commands:

rds-authorize-db-security-group-ingress MyTestServer123 --ec2-security-group-name default

This will place your server in the “default” security group. The default group always exists so it is ok to use here. Then you use the following command to give your ip address access to the server:

rds-authorize-db-security-group-ingress default --cidr-ip 123.124.125.126/24

Here my public ip address is 123.124.125.126. The /24 after the ip address means that all addresses starting with 123.124.125 should be allowed to connect. Read more about the cidr format here: http://en.wikipedia.org/wiki/CIDR.

Now, finally, your server is ready to be used! Try connecting using your favorite tool. I prefer MySQL Query Browser which is part of the MySQL GUI Tools. Download it here: http://dev.mysql.com/downloads/gui-tools/5.0.html.

Trying to connect

To connect you must specify the server name you noted earlier. Run rds-describe-db-instances if you forgot it. The user name and password are the ones you specified when you created the server.

Connected!

 

Great! Now we have a database server that we can do anything with! Try creating a database and some users and some tables.

After you are done playing with your server you will probably want to remove it. If you don’t you will be billed per hour until you do, so don’t forget this! Use the following command to delete it:

rds-delete-db-instance mytestserver123 --skip-final-snapshot

The --skip-final-snapshot flag tells the program that you don’t need a backup of the server. This is ok as long as you are just experimenting. When deleting a server you get one final chance to stop the process. Answer Y at the following prompt to start the deletion:

    Once you begin deleting this database, it will no longer be able to accept connections.
    Are you sure you want to delete this database? [Ny]y
DBINSTANCE  mytestserver123  2009-11-04T11:50:21.554Z  db.m1.small mysql5.1  5
 root  deleting  us-east-1b  1
      SECGROUP  default  active
      PARAMGRP  default.mysql5.1  in-sync

Now you server will be deleted after a few minutes.

Using the web services from a .Net application

Well, all this has been nice and useful, but not very fun. So I decided to write an application that manages these servers for us. Since I’m a .Net developer that is the tool I will be using.

MySQL has a nice set of ADO.Net compatible classes for download here: http://dev.mysql.com/downloads/connector/net/6.1.html.
And AWS has a nice set of .Net classes that wrap the RDS web service for download here: http://developer.amazonwebservices.com/connect/entry.jspa?externalID=2946&categoryID=293.

I found a bug in the AmazonRDSClient class where the SkipFinalSnapshot argument was incorrectly encoded. This is easy to fix by changing line 1458 in AmazonRDSClient.cs:

// From
parameters.Add("SkipFinalSnapshot", request.SkipFinalSnapshot + "");
// To
parameters.Add("SkipFinalSnapshot", request.SkipFinalSnapshot.ToString().ToLower() + "");

Using these classes I wrote a simple WPF application that connects to RDS and downloads a list of server instances. It also lets you create new instances, delete instances and test that you can connect to an instance.


Download the source code here. The application is a WPF 4 application that needs Visual Studio 2010 to compile.

RDSApp.zip (781.82 kb)

 

kick it on DotNetKicks.com

.NET, Databases , , , ,

Comments

04.11.2009 15:18:03 #
Playing with the Amazon Relational Database Service

You've been kicked (a good thing) - Trackback from DotNetKicks.com
04.11.2009 19:12:40 #
Social comments and analytics for this post

This post was mentioned on Twitter by runegri: Blogged: Playing with the Amazon Relational Database Service. http://bit.ly/8dr3D
04.11.2009 22:46:58 #
Pingback from topsy.com

Twitter Trackbacks for
        
        It should be fun | Playing with the Amazon Relational Database Service
        [rag.no]
        on Topsy.com
06.11.2009 13:57:23 #
Very good and practical blogg entry!!

I'm in a training session with Amazon WS right now and forwarded your concern about trusting your data with AWS to the instructor. He answered that in general  security is the no.1 concern regards to Cloud Computing and Amazon WS. What he recommends is to read the AWS Security Whitepaper aws.amazon.com/.../

He underlines that Amazon is very serious about security (they hold credit card information for 80 million customers) and that they comply with industry certifications as SOX and SAS70.

My personal opinion is that there will be scenarios where you should not put data our in the cloud (mostly because of location issues), but that will we the exception rather then the rule
06.11.2009 14:10:39 #
Thanks for your comment. Smile
Amazon are experts on security, so I think this will be more a question of corporate policy than actual security concerns.

AWS have server farms in both Europe and the US, so I don't think location issues will be a big problem. At least not around here...
06.11.2009 15:03:39 #
There may be some clients that have claimed that it could be an issue of shipping data out of the country - I need to dig into the details on this.

One challenge with location that could be an issue is latency and response time - some architecture rely on that the server is placed in the basement.  
09.04.2010 02:36:31 #
Pingback from marketing.ourcaringmatters.net

Our Caring Matters — Blog — Excelentes artículos
09.04.2010 02:36:35 #
Pingback from marketing.fishki.me

Excelentes artículos | Marketing
09.04.2010 02:36:59 #
Pingback from marketing.2bewriter.com

Excelentes artículos «  Marketing
09.04.2010 02:37:36 #
Pingback from aparecerengoogle.wordpress.com

Excelentes artículos « Aparecer en Google
09.04.2010 02:38:19 #
Pingback from marketingonline.commoncircle.net

marketingonline  » Blog Archive   » Excelentes artículos
09.04.2010 02:39:02 #
Pingback from marketing.punter2punter.com

Excelentes artículos «  Marketing
09.04.2010 02:39:03 #
Pingback from marketingblog.bloggproffs.se

Marketing Blog » Excelentes artículos
09.04.2010 02:39:37 #
Pingback from publicidadonline.monhappyblog.com

Excelentes artículos | Publicidad Online
09.04.2010 02:39:39 #
Pingback from abacf.eu

Excelentes artículos | Publicidad Online
09.04.2010 02:40:25 #
Pingback from ocio.shotabdi.com

Excelentes artículos «  Ocio
09.04.2010 02:40:28 #
Pingback from marketingonlineblog.jeunessarkozystes.fr

marketingonlineblog » Excelentes artículos
09.04.2010 02:40:35 #
Pingback from wpblogs.co.tv

Publicidad Online » Excelentes artículos
09.04.2010 02:41:13 #
Pingback from marketingonline2.wordpress.com

Excelentes artículos « Marketing Online
09.04.2010 02:41:16 #
Pingback from marketingblog1.wordpress.com

Excelentes artículos « Marketing Blog
09.04.2010 02:41:46 #
Pingback from publicidadonline.bloguni.com

Publicidad Online  » Blog Archive   » Excelentes artiacute;culos
09.04.2010 02:43:12 #
Pingback from marketingonline.blogimer.com

Excelentes artículos | Marketing Online
09.04.2010 02:43:17 #
Pingback from marketingongoogle.justblogme.net

Excelentes artículos «  marketingongoogle
09.04.2010 02:43:26 #
Pingback from blogromania.org

Excelentes artículos «  Publicidad Online
09.04.2010 02:43:29 #
Pingback from refsignups.com

Excelentes artículos
09.04.2010 02:43:34 #
Pingback from citybeeblogs.org

Marketing Online » Excelentes artículos
09.04.2010 02:43:34 #
Pingback from marketing.bpblogg.se

Excelentes artículos «  marketing
09.04.2010 02:43:59 #
Pingback from marketingblog.isay.co.za

marketingblog  » Blog Archive   » Excelentes artículos
09.04.2010 02:45:01 #
Pingback from imadieingbreed.com

Excelentes artículos «  Publicidad Online
09.04.2010 02:45:03 #
Pingback from marketingonline.bloggeri.es

Excelentes artículos «  Marketing Online
09.04.2010 02:45:38 #
Pingback from marketingonline.shareurworld.com

Excelentes artículos - Marketing Online
09.04.2010 02:46:31 #
Pingback from marketingblog.mundua.com

Marketing Blog » Excelentes artículos
09.04.2010 02:47:43 #
Pingback from bloging.canli.az

Bloging  » Blog Archive   » Excelentes artículos
09.04.2010 02:48:00 #
Pingback from publicidadonline.blog10.net

Excelentes artículos «  Publicidad Online
09.04.2010 02:48:09 #
Pingback from fragilite.com

Marketing » Excelentes artículos [on fragilité]
09.04.2010 02:48:39 #
Pingback from blog.traitimyenbai.net

Publicidad Online  » Blog Archive   » Excelentes artiacute;culos
09.04.2010 02:48:48 #
Pingback from mommypress.com

Excelentes artículos «  marketingonline
09.04.2010 02:48:53 #
Pingback from marketing.norwayexperience.com

Excelentes artículos «  Marketing
09.04.2010 02:49:41 #
Pingback from blog.thaimuslim.com

marketingonline -   Excelentes artículos
09.04.2010 02:49:57 #
Pingback from marketingonline.jurnl.com

» Excelentes artículos marketingonline
09.04.2010 02:49:59 #
Pingback from marketingonline.lah.cc

» Excelentes artículos Marketing Online
09.04.2010 02:50:01 #
Pingback from marketingblog.my1blog.com

Marketing Blog » Excelentes artículos
09.04.2010 02:50:04 #
Pingback from publicidadonline.blogdun.com

Excelentes artículos «  Publicidad Online
09.04.2010 02:50:21 #
Pingback from marketing.clydesdalecommunity.com

Clydesdale Community — Blog — Excelentes artículos
09.04.2010 02:50:54 #
Pingback from publicidadonline.getablog.net

Excelentes artículos «  Publicidad Online
09.04.2010 02:51:05 #
Pingback from marketingonline.prestigious-hosting.com

Excelentes artículos | Marketing Online
09.04.2010 02:51:15 #
Pingback from marketing.allthingsblogged.com

Excelentes artículos «  Marketing
09.04.2010 02:51:40 #
Pingback from blogyourownway.com

Excelentes artículos «  Marketing
09.04.2010 02:51:53 #
Pingback from marketing.gamerzz.com

Excelentes artículos «  Marketing
09.04.2010 02:52:09 #
Pingback from marketing.you.in.th

Excelentes artículos
09.04.2010 02:52:11 #
Pingback from pals.fnm0.com

Excelentes artículos «  Turismo Blog
09.04.2010 02:52:39 #
Pingback from bigrockslittlerocks.com

Excelentes artículos «  Publicidad Online
09.04.2010 02:53:23 #
Pingback from marketingonline.musicfizz.com

Music Fizz Interactive Community Portal - Join For Free | Home
09.04.2010 02:53:30 #
Pingback from marketingonline.flipping-everything.com

Marketing Online
09.04.2010 02:53:49 #
Pingback from marketingonline.khmer.name

Excelentes artículos «  marketingonline
09.04.2010 02:54:00 #
Pingback from marketing.web-service-api.jp

Excelentes artículos «  Marketing
09.04.2010 02:54:43 #
Pingback from marketing.bau.web.tr

Balıkesir Üniversitesi Marketing
09.04.2010 02:54:54 #
Pingback from publicidadonline.skydx.com

Publicidad Online  » Blog Archive   » Excelentes artículos
09.04.2010 02:55:23 #
Pingback from marketingonline.handymantips4you.com

Excelentes artículos «  Marketing Online
09.04.2010 02:55:28 #
Pingback from marketingongoogle.ladyrrs.com

Excelentes artículos «  Marketing on Google
09.04.2010 02:55:32 #
Pingback from marketingonline.android-apps.us

Excelentes artículos
09.04.2010 02:55:47 #
Pingback from marketingonline.evopolis.com

marketingonline  » Excelentes artículos
09.04.2010 02:55:58 #
Pingback from marketingonline.bloguri.myjob.ro

» Excelentes artículos Marketing Online
09.04.2010 02:56:05 #
Pingback from marketingonline.comprasegura.biz

Excelentes artículos «  Marketing Online
09.04.2010 02:56:07 #
Pingback from marketingonline.wloger.com

Marketing Online  » Blog Archive   » Excelentes artículos
09.04.2010 02:56:22 #
Pingback from marketingonline.blogfloss.com

» Excelentes artículos Marketing Online
09.04.2010 02:56:27 #
Pingback from marketingonline.v-friends.com

Excelentes artículos : marketingonline
09.04.2010 02:56:47 #
Pingback from marketingonline.irshare.com

Marketing Online  — Excelentes artículos
09.04.2010 02:56:59 #
Pingback from marketingonline.bloxto.com

marketingonline » Excelentes artículos
09.04.2010 02:57:01 #
Pingback from leonardo-web.org

Excelentes artículos | Marketing
09.04.2010 02:57:35 #
Pingback from theblogs.net

Excelentes artículos
09.04.2010 02:57:52 #
Pingback from wetalktennis.com

Excelentes artículos «  Marketing
09.04.2010 02:58:01 #
Pingback from marketing.clickdeindia.com

Marketing » Excelentes artículos
09.04.2010 02:58:01 #
Pingback from marketingonline.helpsendme.com

Marketing Online » Excelentes artículos
09.04.2010 02:58:15 #
Pingback from marketing.dayrecipe.com

Marketing  » Blog Archive   » Excelentes artículos
09.04.2010 02:58:21 #
Pingback from goldencafe.com

Excelentes artículos «  Marketing Online
09.04.2010 02:58:27 #
Pingback from notimefordinner.net

Excelentes artículos «  Marketing
09.04.2010 02:58:29 #
Pingback from marketingonline.allaboutsingles.com

Excelentes artículos - marketingonline
09.04.2010 02:58:33 #
Pingback from marketingonline.blogcafy.com

Excelentes artículos «  Marketing Online
09.04.2010 02:58:36 #
Pingback from marketingonline.unrestrictedminds.com

Marketing Online  » Blog Archive   » Excelentes artículos
09.04.2010 02:58:50 #
Pingback from marketingonline1.1r.ro

Marketing Online  » Blog Archive   » Excelentes artículos
09.04.2010 02:58:50 #
Pingback from marketing.3xblogz.com

Marketing » Excelentes artículos
09.04.2010 02:59:29 #
Pingback from marketing.depre.net

Excelentes artículos «  Marketing
09.04.2010 02:59:40 #
Pingback from balearity.com

Balearity.com — Blog — Excelentes artículos
09.04.2010 02:59:57 #
Pingback from marketing.fhutz.com

Excelentes artículos «  marketing
09.04.2010 03:00:18 #
Pingback from bloghostingcentral.com

Marketing : Excelentes artículos
09.04.2010 03:00:29 #
Pingback from pipteam.com

Excelentes artículos «  Marketing
09.04.2010 03:00:38 #
Pingback from marketing.universalerotic.net

Excelentes artículos «  marketing
09.04.2010 03:01:07 #
Pingback from friends.cinethirai.com

Excelentes artículos «  marketingonline
09.04.2010 03:01:28 #
Pingback from ojaba.co.cc

Marketing » Excelentes artículos
09.04.2010 03:01:35 #
Pingback from marketingonline.bloggerscity.com

Excelentes artículos | Marketing Online
09.04.2010 03:01:56 #
Pingback from ami.im

Marketing Online              » Excelentes artículos
09.04.2010 03:02:08 #
Pingback from marketingonline1.yackk.com

» Excelentes artículos Marketing Online
09.04.2010 03:02:10 #
Pingback from readmyblogtoday.com

Excelentes artículos  - Marketing Online
09.04.2010 03:02:34 #
Pingback from redsoxvyankees.com

Marketing Online -   Excelentes artículos
09.04.2010 03:02:44 #
Pingback from marketing.blogill.com

Excelentes artículos «  Marketing
09.04.2010 03:02:56 #
Pingback from marketing3.wordpress.com

Excelentes artículos « Marketing
09.04.2010 03:02:59 #
Pingback from marketing.nebilo.com

Excelentes artículos |  


Marketing
09.04.2010 03:03:07 #
Pingback from marketingonline.vivalifestyles.net

marketingonline  » Blog Archive   » Excelentes artículos
09.04.2010 03:03:12 #
Pingback from pruebas.nuevosvitrales.com

Excelentes artículos
09.04.2010 03:03:17 #
Pingback from marketingonline.blog-freejapan.jp

Marketing Online » Excelentes artículos
09.04.2010 03:03:33 #
Pingback from marketing.matura.it

Excelentes artículos «  Marketing
09.04.2010 03:03:47 #
Pingback from marketing.blogcommunity.it

Excelentes artículos | Marketing
09.04.2010 03:03:49 #
Pingback from marketingonline.wishfoundation.com

Excelentes artículos | marketingonline
09.04.2010 03:03:56 #
Pingback from priceslapper.com

Marketing Online » Excelentes artículos
09.04.2010 03:03:59 #
Pingback from cognosnetwork.com

Excelentes artículos «  Marketing Online
09.04.2010 03:04:08 #
Pingback from chumphonlive.com

» Excelentes artículos Marketing Online
09.04.2010 03:04:08 #
Pingback from marketingonlineblog.ndesignsblog.com

» Excelentes artículos marketingonlineblog
09.04.2010 03:04:13 #
Pingback from marketingonline.blogsmagic.com

Excelentes artículos «  Marketing Online
09.04.2010 03:04:15 #
Pingback from marketing.gunlog.net

marketing  » Blog Archive   » Excelentes artículos
09.04.2010 03:04:15 #
Pingback from familymascot.com

Familymascot.com  — Blog — Excelentes artículos
09.04.2010 03:04:38 #
Pingback from marketingonline.dinblog.se

Excelentes artículos «  marketingonline
09.04.2010 03:04:39 #
Pingback from marketingonline.amability.com

Excelentes artículos «  Marketing Online
09.04.2010 03:04:46 #
Pingback from marketing.blog.gy

Excelentes artículos | Marketing
09.04.2010 03:04:58 #
Pingback from domizon.com

Excelentes artículos
09.04.2010 03:05:12 #
Pingback from marketing1.jommal.com

Marketing » Excelentes artículos
09.04.2010 03:05:41 #
Pingback from publicidadonline.indielab.org

Excelentes artículos | Publicidad Online
09.04.2010 03:05:43 #
Pingback from blogs.sujets.ca

Marketing Online » Excelentes artículos
09.04.2010 03:05:56 #
Pingback from marketing.hotcliques.com

Excelentes artículos : marketing
09.04.2010 03:05:56 #
Pingback from ocio.blogbaran.com

Excelentes artículos «  Ocio
09.04.2010 03:06:54 #
Pingback from marriedaffairs.blogs.mu

» Excelentes artículos Publicidad Online
09.04.2010 03:07:44 #
Pingback from marketingonline.leftlab.com

Marketing Online  » Blog Archive   » Excelentes artículos
09.04.2010 03:07:46 #
Pingback from marketing.sanspubs.com

Excelentes artículos | Marketing
09.04.2010 03:07:46 #
Pingback from voorne-putten.net

voorne-putten.net — Blog — Excelentes artículos
09.04.2010 03:10:21 #
Pingback from polands-syndrome.net

Polands-Syndrome.net News — Blog — Excelentes artículos
09.04.2010 03:14:03 #
Pingback from publicidadonline.temeculacountryliving.com

Excelentes artículos | Publicidad Online
09.04.2010 03:14:38 #
Pingback from karisma.org.co

Excelentes artículos at  Marketing Blog
09.04.2010 03:14:58 #
Pingback from publicidadonline.coolblogz.com

Excelentes artículos | Publicidad Online
09.04.2010 03:15:16 #
Pingback from marketingonline.jaideespace.com

Excelentes artículos
09.04.2010 03:16:33 #
Pingback from metin2-yang-buy.cn

Marketing Online  » Blog Archive   » Excelentes artículos
09.04.2010 03:18:00 #
Pingback from marketingonline.modnyblog.pl

Marketing Online  » Blog Archive   » Excelentes artículos
09.04.2010 03:19:01 #
Pingback from blogues.de

Marketing Online  » Blog Archive   » Excelentes artículos
09.04.2010 03:19:07 #
Pingback from marketingonline.blogbank.pl

Marketing Online - Blogbank.pl  » Archiwum   » Excelentes artículos
09.04.2010 03:23:20 #
Pingback from marketing.l0lz.com

Excelentes artículos | Marketing
09.04.2010 03:25:01 #
Pingback from publicidadonline.phonesexdigest.com

Publicidad Online » Excelentes artículos
09.04.2010 03:25:24 #
Pingback from marketingonline.techfiz.com

Marketing Online » Excelentes artículos
09.04.2010 03:25:32 #
Pingback from marketingblog.yaphetkotto.org

marketingblog  » Blog Archive   » Excelentes artículos

Add comment




  Country flag

The number (5) not with letters. This is to stop spammers.

biuquote
  • Comment
  • Preview
Loading