Cubrid?

270 views
Skip to first unread message

mikech

unread,
May 16, 2011, 5:48:27 PM5/16/11
to web...@googlegroups.com
Has anyone come across this DB?  Seems like it might be big in Korea.  The screen shots of the manager app looks interesting.

CUBRID RDBMS

unread,
May 16, 2011, 9:37:40 PM5/16/11
to web2py-users
Hi,

I work at the CUBRID DBMS Project. I will be glad to respond to your
questions, if you any particular.

In general, CUBRID is an open source relational database management
system available on Linux and Windows platforms. CUBRID Manager, its
most powerful database administration tool, is also available for Mac
OS X. There are all kinds of programming APIs, including for Python.
In fact, this or coming week we will update our Python API as a result
of a new CUBRID 8.4.0 release, which will be more stable and will
introduce new features available in the new database release.

Users can install CUBRID Python API directly from PYPI (http://
pypi.python.org/pypi/CUBRID-Python) which also distributes its source
code.
Other information about the driver, including the API manual, can be
found on its official page at http://www.cubrid.org/python_programming.

For the support, users can post their issues on the CUBRID Python
forum at http://forum.cubrid.org/viewforum.php?f=28.

If you have any question or suggestions, or would like to contribute
in API development/documentaion, or have any other thought, feel free
to contact me. I will be glad to hear from you.

Best Regards,
Esen Sagynov.
CUBRID Project Manager.
http://www.cubrid.org/
http://twitter.com/cubrid
http://facebook.com/cubrid

Massimo Di Pierro

unread,
May 16, 2011, 11:11:33 PM5/16/11
to web2py-users
Hello Esen,

it should be very easy for us to suport cubrid and I like the support
for sequence types. But we need some information that is not in the
online manual (at least I could not find it).

How do I define a table with an autoincrement integer field?
How do I get the 'id' of the last inserted record?
Is the SQL syntax closer to MySQL, PostgreSQL, MSSQL or other?

If I write the adapter, would you help me run the tests?

Massimo

On May 16, 8:37 pm, CUBRID RDBMS <kadish...@gmail.com> wrote:
> Hi,
>
> I work at the CUBRID DBMS Project. I will be glad to respond to your
> questions, if you any particular.
>
> In general, CUBRID is an open source relational database management
> system available on Linux and Windows platforms. CUBRID Manager, its
> most powerful database administration tool, is also available for Mac
> OS X. There are all kinds of programming APIs, including for Python.
> In fact, this or coming week we will update our Python API as a result
> of a new CUBRID 8.4.0 release, which will be more stable and will
> introduce new features available in the new database release.
>
> Users can install CUBRID Python API directly from PYPI (http://
> pypi.python.org/pypi/CUBRID-Python) which also distributes its source
> code.
> Other information about the driver, including the API manual, can be
> found on its official page athttp://www.cubrid.org/python_programming.
>
> For the support, users can post their issues on the CUBRID Python
> forum athttp://forum.cubrid.org/viewforum.php?f=28.
>
> If you have any question or suggestions, or would like to contribute
> in API development/documentaion, or have any other thought, feel free
> to contact me. I will be glad to hear from you.
>
> Best Regards,
> Esen Sagynov.
> CUBRID Project Manager.http://www.cubrid.org/http://twitter.com/cubridhttp://facebook.com/cubrid

Bruno Rocha

unread,
May 16, 2011, 11:13:58 PM5/16/11
to web...@googlegroups.com
Esen,

I would like to know whats the grand key features of Cubrid over Mysql or Postgres, I am interested in this project but I have a simple question "why should I use Cubrid instead of Mysql or Postgres ?"



--
Bruno Rocha


CUBRID RDBMS

unread,
May 17, 2011, 2:15:27 AM5/17/11
to web2py-users
All right, I will start replying one by one.

1) Organizations tips: at cubrid.org there are two search engines, one
of which is a subset of the other.

a) cubrid.org search - http://www.cubrid.org/?vid=&mid=home&act=IS&is_keyword=AUTO_INCREMENT
It has quite advanced search engine powered by nLucene. You can search
anything there, including all manuals, tutorials, and cubrid.org
pages.

b) Search in CUBRID Manual -
http://www.cubrid.org/?vid=&mid=manual40&category=&search_target=title_content&search_keyword=AUTO_INCREMENT&act=dispXedocsSearchResults&x=0&y=0
All manuals at cubrid.org can be searched separately and filtered by
versions. This is the same search engine, just results are filtered to
CUBRID Manual for specific version, thus a subset of cubrid.org
search.

2) As you might already know last week we have released a new version
of CUBRID 8.4.0 which has about 90% SQL syntax compatibility with
MySQL. So almost everything, including statements, data types and
implicit type conversions are the same in CUBRID. Anyway, here are the
exact answer for your questions.

AUTO_INCREMENT - http://www.cubrid.org/manual/840/en/AUTO_INCREMENT%20Clause
Just like you do in MySQL, for example:
- CREATE TABLE t (i int AUTO_INCREMENT);
- CREATE TABLE ss (id INT AUTO_INCREMENT NOT NULL PRIMARY KEY, text
VARCHAR(32));

3) LAST_INSERT_ID() - http://www.cubrid.org/manual/840/en/LAST_INSERT_ID%20Function
Just like in MySQL:
INSERT into ss VALUES(’cubrid’);
SELECT LAST_INSERT_ID(); // should return the last value of an ID if
it has an auto_increment constraint.

All the common operators and functions in CUBRID must be the
identical. If not, just lookup the manual. If that doesn't help, I am
always here.

4) Like I said in CUBRID 8.4.0 SQL syntax is almost identical to that
of MySQL. In this release we focused on two important aspects. One is
index enhancement (the reason of x2 faster performance), the other is
MySQL Compatibility phase II.

5) What do you mean by "If I write the adapter"? If you mean CUBRID
Python API, then we already have it. But I suppose you mean a new
CUBRID DB Layer for Web2py. In that case, of course. I can probably
dedicate a separate developer who can assist you in getting acquainted
with CUBRID and DBL development. Just let me know what you want.

Esen.

On May 17, 12:11 pm, Massimo Di Pierro <massimo.dipie...@gmail.com>
wrote:
> > CUBRID Project Manager.http://www.cubrid.org/http://twitter.com/cubridhttp://facebook.com/cu...

pbreit

unread,
May 17, 2011, 3:00:13 AM5/17/11
to web...@googlegroups.com
If it's pretty much compatible with MySQL, I'm guessing Massimo will have it supported in DAL by the time we wake up tomorrow!

The performance and scalability features do sound attractive. I'm not sure I'd switch off of Postgres at this point but it might be worthwhile to try it out on a project.

CUBRID RDBMS

unread,
May 17, 2011, 3:00:30 AM5/17/11
to web2py-users
Well, it's at the same time very detailed question and very broad.
It's like why Hyundai created a new car, there is Rolls Roys already
here (200K). Or like why CUBRID, NoSQL, etc. when there is Oracle
Enterprise for 10K (Oracle was one of the first DBs in this nice
world).

It's all about the diversity which gives users more freedom in
deciding which tool is best for its particular project or event part
of that project. The more alternatives, the cheaper (TCO in our case),
the better for consumers. Typical rule of the market.

More detailed answers:

CUBRID has been developed with Web optimization in mind, where
constant availability and speed are the most important factors. What
relates to the question is: will I need to use additional third-party
tools to have my work done if I use this tool? In case of MySQL, for
instance, how do you implement High-Availability? Noway, unless you
use MySQL Cluster or other third-party tools like DRBD and together
with Linux Heartbeat. This is probably something simple web sites
never bother about, but for real world mission critical application
this is the number one headache. Besides, the simplest replication
cannot be done properly, I mean with 0% loss, on MySQL. As you know
MySQL does not provide 100% guarantee for data replication. You can
refer to their manual for more info.

What about CUBRID? As we have thought this through when we had created
our architecture, we considered high-availability from the very
beginning. CUBRID HA is a very powerful and distinguishable feature
with its native CUBRID Heartbeat. This is something almost all our big
users like NHN use in their web services (NHN has 17+ million UV per
month). Moreover, in CUBRID 8.4.0 we have reworked the HA feature in
the terms that it is now much easier to configure and more convenient
to monitor. The data consistency during HA is always 100% guaranteed.
I think you should think about it if you really value what you have on
your site.

I would talk for a long about the CUBRID License Policy (http://
cubrid.org/license), but I think you know yourself what MySQL's policy
is. CUBRID engine is entirely GPL, while everything else users develop
upon/for CUBRID can be BSD, thus we do not require to open your code.
You can't do this with MySQL. Either you buy the Enteprise License for
2K at least, or open your code. Everything derived from/related to
MySQL, must be open. You feel free with CUBRID.

At CUBRID we develop faster, we react to user requests faster. I
suppose this is in the nature of the developers (Koreans work really a
lot, ~60 hours a week in general, I was surprised at first, then got
used to it).

At CUBRID we want to provide ease of development for users. For this
we have created video tutorials, everyday post new tutorials, improve
the APIs constantly. We are more close to the community. You probably
do not feel like at home at MySQL community. But you do at CUBRID's.
At least I will guarantee your every response is addressed.

We provide compatible APIs, at least do every endeavor to, so that our
users do not have to change much of their existing code to comply with
CUBRID style. See CUBRID PHP API Comparison list with MySQL (http://
www.cubrid.org/cubrid_mysql_php_function_comparison). Almost all
functions are identical thanks to the contributions made by our
Chinese users. The same we try to do with Ruby, Python, etc. Here we
encourage the users like you to jump in and help us to make our
drivers easier for our peers.

In terms of performance, you should see our comparison results. Like
http://www.cubrid.org/ssd_performance_test or http://www.cubrid.org/benchmark_result.
I suppose in the coming week I will try to upload the latest
performance test results we have conducted recently. Due to the index
restructurization in the new CUBRID 8.4.0 the SQL statements (we
tested complex multi joined queries) run 30-40% faster on CUBRID than
on MySQL, considering the same environment and settings. This is the
second part of our mission: to fast database engine in addition to
constant availability.

But like I said, the questions like "why should I use Cubrid instead
of Mysql or Postgres ?" are quite broad. So, feel free to ask specific
ones, and I will be happy to continue our discussion.

Btw, did I provide enough reasons?

CUBRID RDBMS

unread,
May 17, 2011, 3:19:18 AM5/17/11
to web2py-users
Oh, one more thing which worths mentioning.

If there is any official support of CUBRID in web2py, you can always
submit it to CUBRID Projects site (http://www.cubrid.org/projects)
(let me know by email to create an account for you). The users can
learn about the new projects directly from cubrid.org. It's an HTML
page(s) you can manage if necessary (e.g.
http://www.cubrid.org/using_cubrid_in_squirrel_sql_client). I can help
you with this later.

Esen.


On May 17, 4:00 pm, pbreit <pbreitenb...@gmail.com> wrote:
> If it's pretty much compatible with MySQL, I'm guessing Massimo will have it
> supported in DAL by the time we wake up tomorrow!http://code.google.com/p/web2py/source/browse/gluon/dal.py

Anthony

unread,
May 17, 2011, 3:35:14 AM5/17/11
to web...@googlegroups.com
Does CUBRID have any full-text search capabilities?

CUBRID RDBMS

unread,
May 17, 2011, 4:09:15 AM5/17/11
to web2py-users
You can use the famous full-text search engine nLucene natively with
CUBRID Manager. The new CM 8.4.0 has a plugin for nLucene which allows
users to create, configure and manager nLucene instances right in the
CUBRID Manager. In fact, we do this for our cubrid.org. Actually this
request (nLucene integrated support) was initiated by one of our
largest users (about 10 millions of subscribed users) last year after
CUBRID 8.3.1 beta has been released. So we put all our efforts to
bring it to CUBRID 8.4.0. So you can enjoy it. There is User Guide for
nLucene in CUBRID Manager you might want to look at
ftp://ftp.cubrid.org/CUBRID_Docs/CM/NLucene_in_CUBRID_Manager_Manual_en.pdf.
You will how easy it is.

DenesL

unread,
May 17, 2011, 9:22:33 AM5/17/11
to web2py-users

dal patched, testing...


On May 16, 11:11 pm, Massimo Di Pierro <massimo.dipie...@gmail.com>
wrote:
> > CUBRID Project Manager.http://www.cubrid.org/http://twitter.com/cubridhttp://facebook.com/cu...

Massimo Di Pierro

unread,
May 17, 2011, 9:38:47 AM5/17/11
to web2py-users
:-)

Of course! It is in trunk. I have not tested it and I am not (yet)
taking advantage of the sequence type and the full-text support (we
need a more global strategy for that).

If anybody wants to try it:

1) install cubriddb
2) use

db = DAL('cubrid://username:password@hostname:port/dbname')

Let me know if it works or what errors you get.

Massimo

On May 17, 2:00 am, pbreit <pbreitenb...@gmail.com> wrote:
> If it's pretty much compatible with MySQL, I'm guessing Massimo will have it
> supported in DAL by the time we wake up tomorrow!http://code.google.com/p/web2py/source/browse/gluon/dal.py

DenesL

unread,
May 17, 2011, 10:58:37 AM5/17/11
to web2py-users

I mean that I patched the dal myself ;)

Anyways, I have trouble connecting even from outside web2py.
Tried with 8.4.0 beta and 8.3.1 but I keep getting an error with the
demodb created during install:

>>> conn = cubriddb.connect('localhost', 30000, 'demodb', 'dba', '')

Traceback (most recent call last):
File "<pyshell#1>", line 1, in <module>
conn = cubriddb.connect('localhost', 30000, 'demodb', 'dba', '')
File "C:\Python26\lib\cubriddb.py", line 170, in __init__
self._db = cubrid.connect(*args, **kwargs)
Error: (-1, 'ERROR: DBMS, 0, Unknown DBMS Error')

>>> conn = cubriddb.connect('localhost', 30000, 'demodb')

Traceback (most recent call last):
File "<pyshell#2>", line 1, in <module>
conn = cubriddb.connect('localhost', 30000, 'demodb')
File "C:\Python26\lib\cubriddb.py", line 170, in __init__
self._db = cubrid.connect(*args, **kwargs)
Error: (-1, 'ERROR: DBMS, 0, Unknown DBMS Error')



On May 17, 9:38 am, Massimo Di Pierro <massimo.dipie...@gmail.com>
wrote:

DenesL

unread,
May 17, 2011, 2:39:06 PM5/17/11
to web2py-users

Connect working after issuing

cubrid server start demodb

Testing...

mikech

unread,
May 17, 2011, 3:43:12 PM5/17/11
to web...@googlegroups.com
Essen:  Thank-you for the quick response.  And Massimo that was real quick - talk about Agile!

Is anyone going to write this up on the CUBRID site like Essen mentioned above?

Mike

Massimo Di Pierro

unread,
May 17, 2011, 4:03:42 PM5/17/11
to web2py-users
before we advertise:
- make sure it works
- we should decide how to deal with 'list:*' types. right now it
handles them like in mysql and does not uses the build-in list type of
cubrid.

DenesL

unread,
May 17, 2011, 4:55:55 PM5/17/11
to web2py-users

LAST_INSERT_ID seems to be available only in Cubrid 8.4.0 (beta).
But after reinstalling version 8.4.0 I can not connect to it (worked
in 8.3.1) even after:

C:\CUBRID\bin>cubrid server start demodb
++ cubrid server start: success

CUBRID RDBMS

unread,
May 17, 2011, 9:57:31 PM5/17/11
to web2py-users
The night passes by, and you are already active. Massimo, you are
quick, man! Thanks for your efforts.

And here are a few thing I would like to comment on.

1) As you have already noticed, you MUST start the db before
connecting to or using it. Thus, you can control yourself which
databases are ON, while turning OFF those which you do not need.

b) You can also set to auto start the particular database(s) in
case you are sure that you will always need to connect to it. See
"Auto Start Database" at http://www.cubrid.org/manual/840/en/Managing%20Service.
Briefly:
- Select the host
- then choose the "Action" menu
- Choose "Properties" submenu.
- Under the "Configure Parameter" click on the "Start Service"
node. Then select which databases you would like to have auto started.

2) LAST_INSERT_ID is a part of MySQL Compatibility phase II, which is
available since CUBRID 8.4.0. I would not mind if you put in the
system requirements as CUBRID 8.4.0 and higher. After all, it's the
most advanced and fastest engine so far.

3) I will open an issue for CUBRID Python API to fix the 'Unknown DBMS
Error". We should display more information if a user forgets to turn
ON the db.

4) DenesL, maybe you would want Massimo to see your patch, so that the
work is more efficient than repeating each other. Talk to him.

5) I will now proceed with the testing. Once have results/issues, will
post it here.

6) I will help to create a page for Web2py on cubrid.org/projects once
Massimo confirms.

So far, thanks to everybody for your contributions. I am very happy!

Have a great day!

Esen.

CUBRID RDBMS

unread,
May 20, 2011, 4:48:10 AM5/20/11
to web...@googlegroups.com
Hi Massimo,

Our Python API developers have taken over testing web2py. However, they are taking a vacation from today until the end of this month. So they will not be available. Upon their arrival to work, they will provide their test results. Is that all right?

Moreover, I have just uploaded the new Python driver to SF.net which supports the latest changes of CUBRID 8.4.0. Please download it from http://www.cubrid.org/python_programming. The new driver API will be available by the end of this month when the developers will come back from vacation. Until then, you can start using the new driver.

David Marko

unread,
May 20, 2011, 6:20:36 AM5/20/11
to web...@googlegroups.com
Great to hear. Can you create a windows binary for python 2.7. web2py is not python 3.1 ready ....

Thanks ...
David

Massimo Di Pierro

unread,
May 20, 2011, 8:51:32 AM5/20/11
to web2py-users
On May 20, 3:48 am, CUBRID RDBMS <kadish...@gmail.com> wrote:
> Hi Massimo,
>
> Our Python API developers have taken over testing web2py. However, they are
> taking a vacation from today until the end of this month. So they will not
> be available. Upon their arrival to work, they will provide their test
> results. Is that all right?

No hurry on my side.Thanks.

> Moreover, I have just uploaded the new Python driver to SF.net which
> supports the latest changes of CUBRID 8.4.0. Please download it fromhttp://www.cubrid.org/python_programming. The new driver API will be

CUBRID RDBMS

unread,
May 24, 2011, 9:57:46 PM5/24/11
to web...@googlegroups.com
CUBRID Python 8.4.0 driver for Python 2.7, 2.6 are also uploaded. Like I said, the API docs and release notes will be ready at the beginning of June.

CUBRID RDBMS

unread,
Jun 9, 2011, 5:05:27 AM6/9/11
to web...@googlegroups.com
Hello Massimo,

How is it going? As I promised we have uploaded the new CUBRID Python API Doc. You can download it from http://www.cubrid.org/python_programming#manual or view it online at ftp://ftp.cubrid.org/CUBRID_Docs/Drivers/Python/8.4.0/index.html.

The documentation is prepared by Epydoc. I also wonder if anyone has some preferences regarding the documentation generator. I would be glad to know.

Stifan Kristi

unread,
Jun 9, 2011, 1:31:22 PM6/9/11
to web...@googlegroups.com
glad to know that, thank you so much.

CUBRID RDBMS

unread,
Jun 22, 2011, 4:27:43 AM6/22/11
to web...@googlegroups.com
Hello guys,

How is it going with the CUBRID support? Is there anything we can do to assist you?
Reply all
Reply to author
Forward
0 new messages