Do you think a DB based on Coroutine and AsyncIO is a good idea? I have written a demo on GitHub.

2016-05-25 Thread jimzuolin
Link: https://github.com/JimChengLin/AsyncDB

I always wonder why people do not make an async DB, when they are crazy with 
async web framework. Hard disks are faster than the Internet, but still pretty 
slow compared to CPU/RAM.

Due to my limited English skill, I may be not able to explain how it works very 
precisely. Please be patient. :)

Currently, people just build a sync DB that provides an async connection. It is 
"evil". Everything should be async.

My implementation is not pure async though. The insert and del actions are half 
async due to there is not async __setitem__. I prefer a neat API over 
performance.

It is my first post.

Jim
-- 
https://mail.python.org/mailman/listinfo/python-list


Re: Do you think a DB based on Coroutine and AsyncIO is a good idea? I have written a demo on GitHub.

2016-05-25 Thread jimzuolin
On Wednesday, 25 May 2016 19:15:38 UTC+1, Ian  wrote:
> On Wed, May 25, 2016 at 10:52 AM,   wrote:
> > Link: https://github.com/JimChengLin/AsyncDB
> >
> > I always wonder why people do not make an async DB, when they are crazy 
> > with async web framework. Hard disks are faster than the Internet, but 
> > still pretty slow compared to CPU/RAM.
> 
> In-process dbm-style databases aren't really all that popular though,
> are they? At least, I never hear much about them. It seems to me that
> most people use out-of-process SQL or NoSQL databases. For those, the
> details of the database implementation aren't very important to the
> user, and all that is really needed is an async client library, such
> as aiopg.
> 
> I wonder if there's a need for a version 3 of the Python DBAPI spec
> including async operations?
> 
> > My implementation is not pure async though. The insert and del actions are 
> > half async due to there is not async __setitem__. I prefer a neat API over 
> > performance.
> 
> Would it be going too far if we had async versions of all the special
> methods: __ainit__, __asetitem__, __aiadd__, etc.?

We do not have to have all special methods. Indeed, we just need an async 
__setitem__. At least, it is my proposal. Would the core dev team consider it?

I think in-process DB is quite popular in less serious development, e.g. SQLite.

A sync DB with async connections can be treated as "async DB". But still, it is 
"evil" :). You know what I mean? It is about purity. Haha
-- 
https://mail.python.org/mailman/listinfo/python-list