Erlang, Strings, Mnesia?

Joe Armstrong joe@REDACTED
Tue Apr 13 15:51:20 CEST 2004


On Thu, 8 Apr 2004, Jimmie Houchin wrote:

> Hello,
> 
> I am trying to understand whether or not Erlang is right or a good 
> option for a website I am building.
> 
> Currently I am processing 422,000 files with 6.6gb of text to place in a 
> database. I will have to regularly parse and process large volumes of 
> textual data.
> 
> The database will initially have 4-5 million rows/objects.
> 
> This data in turn will be searchable. A prime purpose of the data.
> 
> On this page of the Mnesia User Guide it says:
> #http://www.erlang.se/doc/doc-5.3/lib/mnesia-4.1.4/doc/html/Mnesia_chap1.html#1
> #
> #On the other hand, Mnesia may not be appropriate with the following 
> #types of applications:
> #
> #    * Programs that process plain text or binary data files
> 
> I am used to Squeak and Python and native string support.
> 
> I understand well Erlang's strengths. I don't understand where it is weak.
> 
> An example.
> 
> Would Erlang be suitable for a Google type site?
> An Amazon? An eBay?

  Based on what you have said so far there is no way of answering your
question.

  Before doing *any*  major bit of programming I always  try to do the
following:

	1) Identify the most difficult problem(s) to be solved
	2) Prototype solutions the the problems raised in 1)
	3) Measure performance of prototype

  When this has converged you can go ahead and write the program.

  Premature optimizations and pre-conceived ideas about what is and is
not efficient is a sure fired receipt for disaster.

  I  would suggest you  write a  little parser  and build  a prototype
*before* you make any decisions.

  Personally (now I'm *very* biased here) I'd go for yaws - why?

  Yaws got concurrency right.

  I  know nothing  about your  application but  there is  a heck  of a
difference between  having say 1000 users  who just request  a web page
and then break  the connection and 100,000 users who  are logged in to
chat systems and remain connected for hours at a time.

  Yaws is great for handling large numbers of persistent connections -
outstanding.

  I would also  (counter to what some other people  have said) be very
cautious about  using *different* components in your  system.  If you
use Erlang AND mySQL you have to learn to use two things - not one.

  The mySQL way of thinking (SQL)  is NOT the Erlang way of thinking -
and  you  will get  an  impedance mismatch  between  the  two ways  of
thinking.

  Whenever I see projects that use A and B and C and D ... I judder in
horror. Each new thing causes an explosion in complexity << and yes any
problem no matter how trivial can be made nightmarishly difficult just
by using Java, mySQL, Cobra, ASN.1, SOAP, WSDL, ...>>

  Projects  that I  complete  in a  small  amount of  time are  almost
invariably monolingual. Do *everything* in Erlang or C or whatever.

  IMHO - as soon  as you start mixing things you get  into a mess - as
Wirth  said (paraphrased)  - mastery  of one  language is  better than
incomplete knowledge of several.

  So here's what I'd do:

	- Identify the HARD bits
	- do small prototypes of the hard bits
	- measure
	- if fast enough HOORAY
	  if not fast enough ask this group why

  Cheers

  /Joe







> 
> Any wisdom, advise welcome and appreciated.
> 
> Jimmie Houchin
> 
> 




More information about the erlang-questions mailing list