Hello, I'm a student at Truman State University. We're interested in converting our very limited, old undergraduate research experience site into a social networking site that mixes certain aspects of wiki and restricted social networking to further collaboration in particularly Mathematics and Biological research in the midwest of the USA.

We want to list research projects by schools, professors, and the students involved, with multiple tiers of ownership and permissions for editing listings. We want every page on the site, particularly people and projects, to be searchable by keywords, say "graph theory" or "angiogenesis" to quickly find students all over the country working on even loosely connected problems to further collaboration. We want to be able to have projects associated with their abstracts, detailed descriptions, images, and even powerpoint or videos of live presentations to be uploaded and connected to projects. And that's just for starters. After doing some investigating into open source web technology, Drupal definitely seems to be the right fit.

The professor in charge really prefers that the raw data be in a MySQL database that is completely external to Drupal. For example, the listing of people would be a table with name components, address information, and other contact information. This data should be exportable from the database into a CSV other spreadsheet format that is pretty straight forward, clean, and humanly readable. We don't just want this for people, but the data on schools, projects - absolutely everything. This is to protect our data in case Drupal changes in the future, or our needs change and we need to migrate to a completely different platform.

I've personally read a lot about Drupal but I don't really understand how it works. The MySQL database that Drupal requires just to install has many tables, and it's not clear to me where the data goes. We've already started using the CCK to start constructing our own data types, and I've already found posts like this:
http://drupal.org/node/18429 - How to connect to multiple databases within Drupal

But I don't really understand how it all comes together. I am relatively strong with PHP and MySQL, and very weak in Drupal. My questions are:

1) How does Drupal internalize data?
2) Can it be exported easily into a secondary database, or better yet, kept in a simple table that we describe ourselves?
3) In the link that I provided, the php that performs a select on the secondary database, is that part of an example module or part of node data?
*4) On the assumption that Drupal munches up the data into a humanly unreadable form, will it require custom modules to perform the exports, even if it is via SQL INSERTs and run via a cron job?
5) I've been reading Drupal documentation for a few months now in my free time trying to get a grasp on all that will be involved in crafting this proposed site. Just from what I've described, I've found quite a few Drupal modules which will do [what we think] that we want. Any vets willing to estimate how many custom modules/hand crafted PHP will be involved in bringing this all together, or is the ultimate goal of Drupal to avoid that as much as possible?

Any information on any of these points are welcome. Feel free to point me to links to resources for my questions, especially which already explain how Drupal works in regards to the raw DB data in more detail. Thanks so much in advance.

Comments

kjv1611’s picture

Hi, mdm162truman,

I am personally pretty new to Drupal, and associated technolgies. Outside of this, I have some experience with other technologies (MSSQL, VB, VBA), but not much PHP, MySQL, etc. So bear that in mind with my response. I've been using Drupal now for at least 6 to 8 months. I started at around the time Drupal 6.6 was released, I believe.

I'll first jump strait to your listed questions:

  1. Q: How does Drupal internalize data?
    A: Basically, it is all stored within the MySQL database in various tables. I do not think much if anything is hashed other than passwords. Of course, there are IDs as is common in any sort of SQL tables, so for ease of reading/viewing, it would be best to query off of the tables to gather what fields you would actually find useful - and thus possibly a custom module might be worth your time, particularly if you already understand php and MySQL.
  2. Q:Can it be exported easily into a secondary database, or better yet, kept in a simple table that we describe ourselves?
    A:I think I've probably addressed this one in #1.
  3. Q:In the link that I provided, the php that performs a select on the secondary database, is that part of an example module or part of node data?
    A:
    First define the database connections Drupal can use by editing the $db_url string in the Drupal configuration file (settings.php for 4.6 and above, otherwise conf.php).

    From that, it should be stored in the settings.php files which is neither module nor node data. It's a separate file on the server.

  4. Q:On the assumption that Drupal munches up the data into a humanly unreadable form, will it require custom modules to perform the exports, even if it is via SQL INSERTs and run via a cron job?
    A:Also refer to my answer to #1.
  5. Q:Any vets willing to estimate how many custom modules/hand crafted PHP will be involved in bringing this all together, or is the ultimate goal of Drupal to avoid that as much as possible?
    A:I'm no vet for sure, and I haven't the slightest on using customized code. However, as foar as Drupal is concerned, I don't think it's designed to prevent customization, but rather to embrace it. It seems to me that the whole design is such that you can make your site and associated details as custom or as "out of the box" as you want. It can handle any mix of provided and custom work, as best I can tell.

My suggestions for getting started is to just go one step at a time with this one. Start developing your site as you can with already existing modules, and then customize as you find the need. I would think it rather difficult for anyone to determine how much custom work is needed/desired without sitting down and hashing down all the nitty-gritty details of what you want.

If you want to search around for what modules are out there, I find the easiest way to do so is by using www.drupalmodules.com I know the more I use that site, the more I like it - the way it works, etc.

Also, it wouldn't hurt to look for various sites out there which are already using Drupal to do the various things you want to accomplish. There are many blogs out there where people actually describe how they accomplished certain things, including video blogs. Also, there are at least a few websites which list known Drupal sites.

For instance, there's the list of church sites using drupal here:
http://groups.drupal.org/node/2700

And I remember seeing at least these 2 sites, and maybe others:
http://www.drupalsites.net/

and

http://buytaert.net/tag/drupal-sites

I did a lot (a lot for me = at least 6 or 8 months, possibly over a year) of research, myself, before ever deciding on Drupal. Before, I was using a static site for my church, and didn't really get a lot of web stuff going otherwise, but frankly the more I mess with this Drupal stuff, the more excited I am to see or read what else it can do, and sometimes test it myself. One day, I may actually build a handful of sites "for real"! :0)