mysql-native: newbie questions
Steve Teale
steve.teale at britseyeview.com
Mon Apr 7 10:27:04 PDT 2014
On Monday, 17 February 2014 at 22:54:58 UTC, salvari wrote:
> Hi all!
>
> After 14 years using Perl for programming at job I'm now
> learning D. (And enjoying it)
>
> We've been using Perl (at job) for years for loading input data
> (UTF files) into a database and using these data for different
> purposes.
>
> The volume of input data files has been constantly increasing
> along the years and, eventually, we need a faster solution,
> that's the reason to switch back to compiled languages, and D
> seemed interesting enough to give it a try. :-)
>
> As a newbie I've a few questions. I'm already using D and it's
> working fine, although I'm writing baby-D the performance
> improvement is impressive, I'm now trying to use mysql native
> access. It seems there are two possibilities:
>
> - https://github.com/simendsjo/mysqln
> - https://github.com/rejectedsoftware/mysql-native
Quite by accident/coincidence, I recently returned to my mysqln
effort to see if it would still build with the latest dmd.
I had also reinstalled MySQL recently so it was a different
version, and that resulted in a few tweaks to the unit tests.
However, other than that, I had no great problem.
I then set about trying to minimize memory allocations, and
hopefully get the thing to be a bit more speedy. I think I have
made some improvements there.
Now I realize that the code is pretty impenetrable. It's dealing
with a protocol that is really very basic, badly documented, and
consists of streams of ubytes minimized as much as possible,
probably by disparate authors. You don't know what the next byte
might represent until you've looked at the current one in
context, so that makes it as bad a candidate for an input range
as UTF8, or worse.
However, on a return visit, I'm not inclined to change my mind
about the higher level interactions. I think the ability to read
a specific table row into a tuple of D types, or to populate a D
struct is quite cool. Also result sets with multiple rows can
constitute an input range, so the std.algorithm stuff should be
fine for doing finer graded selection than that provided by the
SQL query.
If you want to do database stuff that avoids knowledge of how to
use SQL, then I'd say it could be wrapped to provide that sort of
thing - but then I always hated Visual Basic.
If you give me a couple of weeks or less, I'll convert it into a
tidy module that will build with dub, and then I will invite the
D aficionados to tell me how I can improve the efficiency of the
protocol handling, and the template stuff that I used. From
previous experience, I'm fairly confident that I won't get any
takers, so I'll just keep up with the newsgroup and do the best I
can to keep up with idiomatic D usage, as long as it's not just
to show how cleverly things can be done.
I still quite like it, and if I had to seriously write something
in D that needed MySQL, I would use it in preference to my
earlier attempt at a wrapper around the C library.
But thanks for the interest
Steve.
More information about the Digitalmars-d
mailing list