SitePoint Sponsor

User Tag List

Results 1 to 13 of 13
  1. #1
    SitePoint Enthusiast
    Join Date
    Sep 2002
    Posts
    66
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Are you a software architecture expert?

    Need your advice on data store for applications.

    In addition to using databases at the backend (Oracle, MySQL, SQL server etc)., how difficult is it to have some type of native data structures within the app so the app doesn't have to rely on external databases?

    What type of options exist for native data structures for PHP or ASP based apps (or even ASP.NET)? I've seen ASP being used for some heavy duty applications, like banks using it for their entire customer account logon and information portals.

    Here's the context - we are exploring development for several applications and weighing the options for using external databases (which present their own unique challenges like license issues) vs. internal data structures.

    Please let me know if you have any questions. Thanks for your assistance.

  2. #2
    SitePoint Enthusiast
    Join Date
    Jul 2004
    Location
    In front of my computer
    Posts
    96
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    It is adviced to use a database abstraction layer in your application.
    The overhead is typically 20%, but you can then choose between different storaging systems.

    One option is to look at php, it has numerous database support (Oracle, MySQL, MsSql) and also has an implementation of SQLite, a powerfull file-based database (http://www.sqlite.org/)
    Php has also different database abstraction systems :
    - Adodb ( http://adodb.sourceforge.net/ )
    - Pear :: DB ( http://pear.php.net/package/DB/ )
    - Propel ( http://propel.phpdb.org/wiki/ )
    - PhpLib
    - MetaBase

    The use of SQLite can be really interesting as it requires no prior installation for use . It is also compiled by default with PHP5.

    I let to the others to explain the functionnalities for ASP and other languages.
    (.NET, ADO and XML?)

  3. #3
    SitePoint Enthusiast
    Join Date
    Sep 2002
    Posts
    66
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Zimba, thank you for your input. SQLite looks interesting, but again, it's a third party data store, open source, and it causes problems in terms of licensing etc. The apps we are developing are commercial apps, and will be sold to organizations (corporations, educational institutes etc.).

    Database abstraction has several meanings. When you say database abstraction should be built into the app, I assume you are saying construct the application so that the code is indepedent of the databases being used underneath. So the app can be run on several different databases or other type of datastores.

    From a commercial software vendor point of view, here is the issue with building database abstract apps. If you are selling the app to an entity, they have to have IT people to setup the app, select a database, configure it etc. They need to have that IT person with the right skills. Otherwise, we would have to send a consultant in to assess their computing facilities and setup the app according. That's a lot of overhead. We are aiming for an out of box solution, that we can help setup, if need be, remotely for our customers.

  4. #4
    SitePoint Zealot matiefert's Avatar
    Join Date
    Nov 2001
    Location
    Bay area, California
    Posts
    188
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Quote Originally Posted by HuckFinn
    ...The apps we are developing are commercial apps, and will be sold to organizations (corporations, educational institutes etc.). ...So the app can be run on several different databases or other type of datastores. ... Otherwise, we would have to send a consultant in to assess their computing facilities and setup the app according. That's a lot of overhead. We are aiming for an out of box solution, that we can help setup, if need be, remotely for our customers.
    Another thing to consider: Do your potential customers already have data in databases? It's very likely that they do. If they switch to your application, will they have to import their existing data into your app's database? Will they be able to export from your app's database to their main database? Will it be possible to synchronize the content of your app's database with that of their main database? Even if import/export/synch is possible, why should they bother with that extra step? You may have no choice but to make it so that your app works with the database(s) that your customers already have.

    Yes that may mean they need help setting up your app - but you can charge extra for that or include it in the cost of the app. It's not "overhead" - it's an additional revenue source Being able to seamlessly tap into existing databases also may result in more sales - customers tend to be leery of proprietary solutions from a single vender, especially if the vender is new or small.

    Hope that helps!

    cheers,

    Marj

  5. #5
    SitePoint Enthusiast
    Join Date
    Jul 2004
    Location
    In front of my computer
    Posts
    96
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Quote Originally Posted by HuckFinn
    Zimba, thank you for your input. SQLite looks interesting, but again, it's a third party data store, open source, and it causes problems in terms of licensing etc. The apps we are developing are commercial apps, and will be sold to organizations (corporations, educational institutes etc.).
    Since when you can't developp commercial applications with php ? SQLite is integrated as a library in php, not in your application. Regarding to GPL, you have the rights to work with it, and SQLite's license is really more light : http://www.sqlite.org/copyright.html

    Quote Originally Posted by HuckFinn
    From a commercial software vendor point of view, here is the issue with building database abstract apps. If you are selling the app to an entity, they have to have IT people to setup the app, select a database, configure it etc. They need to have that IT person with the right skills. Otherwise, we would have to send a consultant in to assess their computing facilities and setup the app according. That's a lot of overhead. We are aiming for an out of box solution, that we can help setup, if need be, remotely for our customers.
    I don't agree with you. Your application has to be installed anyway isn't it ? Also many companies don't want to buy an MsSql license when they allready have Oracle or vide-versa. Maybe I misunderstood what you really want..
    You could propose SQLite, MDB or another file-based database, and then let the customer switch to a "true" database if it's asking for more performances.
    You should also know that lot of good php applications are really easy to install :
    - Extract the archive in the webroot
    - Point the browser to some serverurl/install.php
    - Give the database type and dsn
    - Click ok and enjoy

    Another solution I see (depends on your needs), but I expected some microsoft guru to come in the game, but nobody's there for evangelism so I'm gonna do it
    Recently I was playing with dotNet and a nice feature is to use XML files as datasource. Naturally you don't have all the flexibility of sql queries, but it can be usefull for a demo or something not to multi-threaded.
    I'm surely not really precise here...

  6. #6
    SitePoint Enthusiast
    Join Date
    Sep 2002
    Posts
    66
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Thanks again for the input to both of you.

    Marj, yes, we do have the situation where we need to be able to access the customer's existing data. We are already addressing it. The customer can create user accounts in our app, or they can authenticate users against their LDAP server in real-time.

    Also, you're correct about being able to charge separately for consulting, rather than thinking of it as extra "overhead." But there is more to it - if your competitor has a similar product, and theirs costs less to implement, you are at a disadvantage. Of course, there are other things you can do to circumvent that, but many things have to be considered

    Zimba, PHP itself is not the question. I know you can use PHP for non-commercial and commerical use, given that you don't actually modify PHP source and sell that for a profit. You can write applications using PHP and sell them for profit, without any obligations to the PHP folks.

    The question is the database and native datastore mechanims. Thanks for pointing out that SQLite is free for both non-commercial and commercial use. Our apps are not middleware type of apps that need a lot of integration with existing customer datasources. What we need we can handle within the app.

    I'm looking more into the native XML database option. That would take us more towards the .NET and Windows platform.

  7. #7
    SitePoint Enthusiast
    Join Date
    Jul 2004
    Location
    In front of my computer
    Posts
    96
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Why do everybody think XML is database ?

    I agree, it is a structured file, but do you compare .ini or .csv to RDBMS ?
    With XML you need lot of processing for doing the same things (it's text, not binary..). Also all the advanced functions like keys, stored procedures, etc.. are NOT part of XML, it's juste a data-structure.


    Maybe I'm wrong, but I understood you want to have a leightweight database that stores your application informations. If you consider having data written to the database, it's really not a good idea to use XML (even if it's in the hype..). Think about data-locking mechanismes.

    Another alternatives to SQLite is also BerkleyDB (BSD license should be fine for your need also).

    Just a final word : XML is nice for interoperability. it is not suited to brush my teeths, or anything that goes outside of its function

    Note 2 : PHP5 has also native xml integration. If you plan to have 2 months of development, php5 should be released

  8. #8
    SitePoint Enthusiast
    Join Date
    Sep 2002
    Posts
    66
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Thanks again for the input, Zimba

    We are well aware of what XML is, and its pros and cons. There are several applications that use a native XML database implementation to store information internally. Please note a "native XML database implementation" is not the same as saying they use a XML database. Like you correctly pointed out, technically there is no such thing as a XML database.

    A lot of things depend on what kind of data you have, how you need to store and retrieve it etc. A full blown RDMBS can sometimes be an overkill.

    PHP5 may be an option.......

  9. #9
    SitePoint Addict
    Join Date
    Mar 2003
    Location
    CA
    Posts
    210
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Quote Originally Posted by zimba
    Why do everybody think XML is database ?

    I agree, it is a structured file, but do you compare .ini or .csv to RDBMS ?
    I was going to say that he might be talking about an actual XML Database product, but since he takes offense to the issue of purchasing a license I think not.

    Also all the advanced functions like keys, stored procedures, etc.. are NOT part of XML, it's juste a data-structure.
    There are keys in XML. You just have to define the proper schema. Xml can be many things, you just have to know how to use it in a sophisticated manner.
    If you consider having data written to the database, it's really not a good idea to use XML (even if it's in the hype..). Think about data-locking mechanismes.
    Agreed. Precisely. XML writes acquire a lock, serializing all access. But if there is not a lot of writing, or concurrency is not an issue, XML is great. .Net framework uses it extensively, even in the DataSet/DataTable/DataRow objects, which are basically disconnected database-like structures.

    Just a final word : XML is nice for interoperability. it is not suited to brush my teeths, or anything that goes outside of its function
    Folks, here it is! The definitive word from the expert Mr. Zimba - Xml is not suited to be used for things that it is not well suited to be used for. Well I'll be darned. Just what is XML's function, zimba?
    -ChaCha

  10. #10
    SitePoint Enthusiast omerie63's Avatar
    Join Date
    Jul 2004
    Location
    WISCONSIN
    Posts
    53
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    From an OOP background, and seeing the terrific effect that XML, and webservices have had during the past years I would say why not java.

    I think both of them are free. You can create your objects in java and then feed the data from xml files.

    I know this method could be taking much more programming time than the others but in order for something to work easy something else has to work hard, do see what I am trying to get to.

    You can never generalize on customers needs. They may be all different. The key is to remail flexible. Why not make it modular enough that you can make the same interface to pulling the data, but from the back end you might connect to different data sources. That is a good possibility I would say.

    Another application I have had the chance have seen in action is FoxPro. It has it's own database system, tables and so on. But it cost money for the developer.

  11. #11
    SitePoint Enthusiast
    Join Date
    Jul 2004
    Location
    In front of my computer
    Posts
    96
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Quote Originally Posted by ChaCha
    Folks, here it is! The definitive word from the expert Mr. Zimba - Xml is not suited to be used for things that it is not well suited to be used for. Well I'll be darned. Just what is XML's function, zimba?
    Hey, please note the smile after this sentence

    Thanks for pointing, and yes xml have keys. The purpose of this post was not to show that you couldn't do something with xml, but more that people tend to use xml for anything.
    As english is not my native language, I feel like some links would maybe express my thought betten than I could :
    http://c2.com/cgi/wiki?XmlSucks
    And here another one : What is XML

    Cheers,
    zimba

  12. #12
    SitePoint Addict
    Join Date
    Mar 2003
    Location
    CA
    Posts
    210
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Oh, a joke. I have trouble recognizing those sometimes...
    -ChaCha

  13. #13
    Web developer chrisranjana's Avatar
    Join Date
    Jan 2001
    Location
    chennai , tamil nadu , India
    Posts
    710
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Yes need to look at the funny side of things sometimes though !
    Chris, Programmer/Developer,
    Laravel Php Developers, Ruby on Rails programmers,
    Moodle, Opencart, Magento, Geodesic Classifieds/Auctions,
    www.chrisranjana.com


Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •