Hi David,
Alchemy is based on redis unstable from about 2 weeks ago, so post
2.4. I refactored the code heavily and can now update the redis base
layer in about 4 hours, so the next time I do an Alchemy release I
will find the most recent stable redis release and use that as the
base. The base needs both scripting and cluster code, so it will stay
close to redis/unstable until redis 3.0. And on that note, the github
code is not yet stable (there are known bugs), I need until the end of
the month for that.
I did not tackle AOF improvements, I was hoping the redis team would
solve this and I could piggyback on them, but that did not happen. The
methodology to rewrite the AOF file in an external process using
deltas and what not has been discussed for about a year, but there has
not been significant progress on it, by me or the redis team. I almost
did the AOF improvements about 10 months ago, but figured it would
then just be duplicated by the redis team, so I didn't :) It is on my
TODO also, but not very high.
The license change from GP L to AGPL is complicated. Basically I have
been doing this project full-time for about 16 months, and after 9
months it became evident I needed sponsorship for it, otherwise I just
had no time, so I got sponsorship, in the form of working for
companies that used Alchemy, and that put bread on the table and
furthered the development of the product, but I also spent way too
much time on the customer's products and not on developing Alchemy,
but the strategy served its purpose of getting me to where I am now.
So I am following Neo4j's business model, they went AGPL and said: "if
you're open source, we're open source", and they also sold commercial
licenses, and eventually they came out w/ a GPL'ed community edition.
So that is exactly my plan, and purists are going to argue that I
should BSD the project, but if I do that, it will not get sponsored/
funded, and it will most likely not make it, so what purpose would
that serve. I have gotten interest in this project from very large
companies, many willing to pay for licenses, so the AGPL is necessary
to be able to charge them money. For people not working for HUGE
companies, I have no plans on charging them, because it doesn't make
any sense on any level ... so pretty much, shoot me an email, and
write: "I dont work for google or facebook" and I will give you a GPL
license and a lot of support happily :)
If someone has a better idea on how I can license Alchemy and make
enough money to continue developing it, I am all ears, please voice
your opinions. My real interests here are not to get rich quick w/
Alchemy, rather to build it up to something very large over time, but
w/o some form of revenue, it wont happen.
Here is a short list of new features (off the top of my head)
1.) improved query optimiser - non-complex joins now supported (this
is a huge win, any sane OLTP join is covered)
2.) REPLACE command
3.) INSERT bulk (i.e. many rows in a single command)
4.) INSERT ON DUPLICATE REPLACE
5.) ALTER TABLE ADD COLUMN
6.) partial row storage (since Alchemy uses streams for rows, sparse
data in SQL rows is possible -> NOSQL-esque)
7.) Multiple Column Indexes (compound indexes)
8.) Unique Indexes
9.) LONG datatype
10.) LRU Index - together w/ #12 LUATRIGGERs, its pretty easy to
create a LRU cache for SQL tables
11.) improved LUA, now calls "luafunc arg1 arg2 ...." - amazingly fast
and easier to use than redis' EVALSHA1
12.) LUATRIGGERs - call LUA routines automatically on the row you just
inserted - also very fast
13.) pure_redis output mode -> SQL rows are output in nested redis
protocol
14.) EXPLAIN query command -> for join commands and complicated range
queries, show the join plan
15.) webserver mode (this is insane), use Alchemy as a HTTP webserver
which calls whitelisted LUA functions to serve dynamic webpages (I
will blog on this, can we say dynamic webpages w/ database lookups @
65K HTTP REQ/s on a single 3.0 GHz core :)
16.) redis cluster integration for SQL tables (a work in progress, a
glimpse of the very large direction this is going in)
There are more, and I am in the process of updating the google code
page. I also took out a lot of code (morph commands) that I thought
was better server by doing it in LUA (and was not very popular/
useful). So I am in the process of cleaning up, fixing bugs, updating
documentation, extending the testing suite, etc...., release ready in
2-6 weeks (depending on if I am busy w/ other stuff).
- Jak
On Jul 14, 2:42 am, David Yu <
david.yu....@gmail.com> wrote:
> On Thu, Jul 14, 2011 at 1:36 PM, David Yu <
david.yu....@gmail.com> wrote: