Redian新闻
>
c,java, 数据库内核,数据库应用
avatar
c,java, 数据库内核,数据库应用# Java - 爪哇娇娃
g*a
1
前面二张是主校区的,,后面三张是分校区的。注意看最后一张的学校规定。
有要求学生早晚要大便一次。
大家发我些伪币吧,谢谢
avatar
f*2
2
数据库接口,java的确做的比其他语言的lib好很多,所以数据库应用java成为
首选正义不大。
可是数据库的内核,有些open source的database,甚至
in-memory database也用java写,估计是和游击队没有
办法大兵团作战的性质有关。berkeley DB是c写的,虽然也
是open source家族,进入特殊领域的主流,这恐怕就是区别。
想问问java高手们,有商业数据库内核用java实现的吗?
avatar
m*t
3

The idea behind pure java dbs is (obviously) not to compete with
those more mature C implementations as a generic dbms solution.
Pure java-based dbs are mostly designed to be embedded in applications,
or to serve as testing fixture.

【在 f******2 的大作中提到】
: 数据库接口,java的确做的比其他语言的lib好很多,所以数据库应用java成为
: 首选正义不大。
: 可是数据库的内核,有些open source的database,甚至
: in-memory database也用java写,估计是和游击队没有
: 办法大兵团作战的性质有关。berkeley DB是c写的,虽然也
: 是open source家族,进入特殊领域的主流,这恐怕就是区别。
: 想问问java高手们,有商业数据库内核用java实现的吗?

avatar
w*g
4
C/C++在数据库客户端算是彻底败了。特别是C++,发展了这么多年,竟然没有一个牛B
的客户端类库。
要说服务器端,不管用什么语言搞一个都不容易。支持基本的SQL是一回事,正确实现
事务逻辑还要高流量再加上数据恢复什么的,没个七八年弄不下来。现在有那么多免费
的服务器,也基本上覆盖了各种需求,用java再去实现一个意义不大。
就语言来说,java虽然目前在没有内存限制的情况下速度上和C++已经相差无几,但是
相同运算的内存需求还是太大。而稍微上一点规模的数据库几乎都是内存紧缺的,能多
出来一点内存做cache,会对性能影响非常大。所以版上的java大牛们别生气:用java
做数据库服务器基本没戏。

【在 f******2 的大作中提到】
: 数据库接口,java的确做的比其他语言的lib好很多,所以数据库应用java成为
: 首选正义不大。
: 可是数据库的内核,有些open source的database,甚至
: in-memory database也用java写,估计是和游击队没有
: 办法大兵团作战的性质有关。berkeley DB是c写的,虽然也
: 是open source家族,进入特殊领域的主流,这恐怕就是区别。
: 想问问java高手们,有商业数据库内核用java实现的吗?

avatar
g*g
5
数据库实现这种东西是追求性能的,Java当然不合适。除了嵌入式DB
的地方比较方便一些,别的地方是不用的。

牛B
java

【在 w***g 的大作中提到】
: C/C++在数据库客户端算是彻底败了。特别是C++,发展了这么多年,竟然没有一个牛B
: 的客户端类库。
: 要说服务器端,不管用什么语言搞一个都不容易。支持基本的SQL是一回事,正确实现
: 事务逻辑还要高流量再加上数据恢复什么的,没个七八年弄不下来。现在有那么多免费
: 的服务器,也基本上覆盖了各种需求,用java再去实现一个意义不大。
: 就语言来说,java虽然目前在没有内存限制的情况下速度上和C++已经相差无几,但是
: 相同运算的内存需求还是太大。而稍微上一点规模的数据库几乎都是内存紧缺的,能多
: 出来一点内存做cache,会对性能影响非常大。所以版上的java大牛们别生气:用java
: 做数据库服务器基本没戏。

avatar
f*2
6
可否关键部分用java写,然后把代码用GCJ编译成binary?这样的好处是
--java programmer的开发效率高写
--完全编译成binary后runtime footprint 小。
GCJ编译出来的东西比正常C++binary效率低多少

【在 g*****g 的大作中提到】
: 数据库实现这种东西是追求性能的,Java当然不合适。除了嵌入式DB
: 的地方比较方便一些,别的地方是不用的。
:
: 牛B
: java

avatar
g*g
7
数据库核心的部分并不是一个很大的项目,但是要求很高,别说Java,
恐怕C++都不敢用,就是纯C。啥优化也没有手工优化好。

【在 f******2 的大作中提到】
: 可否关键部分用java写,然后把代码用GCJ编译成binary?这样的好处是
: --java programmer的开发效率高写
: --完全编译成binary后runtime footprint 小。
: GCJ编译出来的东西比正常C++binary效率低多少

avatar
f*2
8
premature optimization is the root of evil。
这个说法感觉比较外行,上来就考虑micro-optimization,
你还不如建议用assembly写。

【在 g*****g 的大作中提到】
: 数据库核心的部分并不是一个很大的项目,但是要求很高,别说Java,
: 恐怕C++都不敢用,就是纯C。啥优化也没有手工优化好。

avatar
c*t
9
说实在,你倒是让人一个外行的感觉。
你有空的话看看 sqlite 或者 postgresql 的代码就知道了。
一个是 memory management 。想靠 garbage collection 是不行的。postgresql
用的是 memory context,这样 free 的话基本上不花时间,也避免 memory leak 。
database 里面 memory / cache management 是极端重要的。
另外,速度很容易被放大的。比如 A 用 C 写来 access tuple 里的某个 column
是用 macro,direct cast 只要几个 op,而 B 用 Java 就得 N 多步骤。有 1000
tuple 恐怕还没太大不同,1million 就很不一样了。更不用说 memory 方面。
所以 posgresql 里面大量运用 macro 。
我以前做过个实验,把直接调用 postgresql 里面几个 api 改成跳过,直接用
macro 处理低端的 structure 以后,可以大大提高性能(N 倍,在 disk cache
的情况下)。

【在 f******2 的大作中提到】
: premature optimization is the root of evil。
: 这个说法感觉比较外行,上来就考虑micro-optimization,
: 你还不如建议用assembly写。

avatar
f*2
10
对呀,我就是database外行人问问呀。
不过对系统上来就说macro/inline重要的同学,
多半对系统也不是内行,可能对micro-benchmarking比较熟。

【在 c*****t 的大作中提到】
: 说实在,你倒是让人一个外行的感觉。
: 你有空的话看看 sqlite 或者 postgresql 的代码就知道了。
: 一个是 memory management 。想靠 garbage collection 是不行的。postgresql
: 用的是 memory context,这样 free 的话基本上不花时间,也避免 memory leak 。
: database 里面 memory / cache management 是极端重要的。
: 另外,速度很容易被放大的。比如 A 用 C 写来 access tuple 里的某个 column
: 是用 macro,direct cast 只要几个 op,而 B 用 Java 就得 N 多步骤。有 1000
: tuple 恐怕还没太大不同,1million 就很不一样了。更不用说 memory 方面。
: 所以 posgresql 里面大量运用 macro 。
: 我以前做过个实验,把直接调用 postgresql 里面几个 api 改成跳过,直接用

avatar
z*e
11
为什么java能够大发展?
很重要一个原因就是正确地估计了人类科技水平的发展
所以这个语言完全不考虑内存的使用
全部交给计算机去实现
而摩尔定律也正好使得这个前提成为可能
avatar
d*y
12
"数据库核心的部分并不是一个很大的项目"
这个的确外行。光编译一块就数小时,算小吗?就复杂性而言,恐怕只有OS级别的可以
比较。
用C是因为老CODE,没办法。现在新模块都用C++。
用什么语言是个次要的问题,好的OO的设计应该可以极大提高可维护性。对大系统而言
,非常重要。

【在 g*****g 的大作中提到】
: 数据库核心的部分并不是一个很大的项目,但是要求很高,别说Java,
: 恐怕C++都不敢用,就是纯C。啥优化也没有手工优化好。

avatar
g*g
13
我对数据库确实外行,但从java实现的一些数据库,比如Apache Derby来看,
其代码量并不如一个应用服务器,甚至如Spring这样的lightweighted container
大。跟OS完全不在一个量级上。Derby的核心bytecode代码仅在3M左右。固然
数据库实现有多种方式,支持的特性不同,但核心部分显然没有你说的那么复杂。

【在 d****y 的大作中提到】
: "数据库核心的部分并不是一个很大的项目"
: 这个的确外行。光编译一块就数小时,算小吗?就复杂性而言,恐怕只有OS级别的可以
: 比较。
: 用C是因为老CODE,没办法。现在新模块都用C++。
: 用什么语言是个次要的问题,好的OO的设计应该可以极大提高可维护性。对大系统而言
: ,非常重要。

avatar
c*t
14
估计上面那位是想到了 teradata 之类的 database ,那已经不是简单
的 database 范涛。sqlite,berkeley db 等还是挺小的。

【在 g*****g 的大作中提到】
: 我对数据库确实外行,但从java实现的一些数据库,比如Apache Derby来看,
: 其代码量并不如一个应用服务器,甚至如Spring这样的lightweighted container
: 大。跟OS完全不在一个量级上。Derby的核心bytecode代码仅在3M左右。固然
: 数据库实现有多种方式,支持的特性不同,但核心部分显然没有你说的那么复杂。

avatar
F*n
15
以前数据库的课TERM PROJECT就是实现一个数据库,如果“编译就要几小时”那还有谁
能PASS。我那个组的代码最后只有100K多一点。

【在 g*****g 的大作中提到】
: 我对数据库确实外行,但从java实现的一些数据库,比如Apache Derby来看,
: 其代码量并不如一个应用服务器,甚至如Spring这样的lightweighted container
: 大。跟OS完全不在一个量级上。Derby的核心bytecode代码仅在3M左右。固然
: 数据库实现有多种方式,支持的特性不同,但核心部分显然没有你说的那么复杂。

avatar
F*n
16
你想多了,JAVA能大发展除了语言优秀外,主要是实际应用中存在大量用非JAVA和JAVA PERFORMANCE 差别不大的情况,这部分应用没有必要用C,如此而已。
如果JAVA在所有的情况下都比C慢很多,那也早就完蛋了。

【在 z****e 的大作中提到】
: 为什么java能够大发展?
: 很重要一个原因就是正确地估计了人类科技水平的发展
: 所以这个语言完全不考虑内存的使用
: 全部交给计算机去实现
: 而摩尔定律也正好使得这个前提成为可能

avatar
F*n
17
三藏大师还是很牛的

【在 f******2 的大作中提到】
: 对呀,我就是database外行人问问呀。
: 不过对系统上来就说macro/inline重要的同学,
: 多半对系统也不是内行,可能对micro-benchmarking比较熟。

avatar
k*r
18
有没有试过h2 java db,据说很快的

【在 c*****t 的大作中提到】
: 说实在,你倒是让人一个外行的感觉。
: 你有空的话看看 sqlite 或者 postgresql 的代码就知道了。
: 一个是 memory management 。想靠 garbage collection 是不行的。postgresql
: 用的是 memory context,这样 free 的话基本上不花时间,也避免 memory leak 。
: database 里面 memory / cache management 是极端重要的。
: 另外,速度很容易被放大的。比如 A 用 C 写来 access tuple 里的某个 column
: 是用 macro,direct cast 只要几个 op,而 B 用 Java 就得 N 多步骤。有 1000
: tuple 恐怕还没太大不同,1million 就很不一样了。更不用说 memory 方面。
: 所以 posgresql 里面大量运用 macro 。
: 我以前做过个实验,把直接调用 postgresql 里面几个 api 改成跳过,直接用

avatar
d*y
19
那些显然是不能叫数据库的。
你总不能说些了点文件管理,内存管理之类,就说自己做了个OS吧。

【在 g*****g 的大作中提到】
: 我对数据库确实外行,但从java实现的一些数据库,比如Apache Derby来看,
: 其代码量并不如一个应用服务器,甚至如Spring这样的lightweighted container
: 大。跟OS完全不在一个量级上。Derby的核心bytecode代码仅在3M左右。固然
: 数据库实现有多种方式,支持的特性不同,但核心部分显然没有你说的那么复杂。

avatar
g*g
20
如果Apache Derby也不能算数据库的话,那除了少数几个主流商业数据库,
大概也没什么东西可以算数据库了。

【在 d****y 的大作中提到】
: 那些显然是不能叫数据库的。
: 你总不能说些了点文件管理,内存管理之类,就说自己做了个OS吧。

avatar
d*y
21
也许是对数据库定义不一样吧。但如果笼统的说数据库简单是不对的。
就像简单的嵌入式OS也没一般Unix或Windows复杂一样。如果凭某些特定
OS不复杂,就说OS很简单,显然是不对的。
以功能而言,也有复杂和简单之说。DBS实际上实现了很多OS的功能,比如文件管理
,内存管理等等。
总之,通用DBS和通用OS一样,是十分复杂的特大型系统软件,其中逻辑关系之复杂
不是没接触过的人可以想象的。

【在 g*****g 的大作中提到】
: 如果Apache Derby也不能算数据库的话,那除了少数几个主流商业数据库,
: 大概也没什么东西可以算数据库了。

avatar
g*g
22
RDBS有很复杂的,但大部分的代码在于外延。
核心的部分无非是存储管理,内存管理,连接池,交易,SQL解释器。

【在 d****y 的大作中提到】
: 也许是对数据库定义不一样吧。但如果笼统的说数据库简单是不对的。
: 就像简单的嵌入式OS也没一般Unix或Windows复杂一样。如果凭某些特定
: OS不复杂,就说OS很简单,显然是不对的。
: 以功能而言,也有复杂和简单之说。DBS实际上实现了很多OS的功能,比如文件管理
: ,内存管理等等。
: 总之,通用DBS和通用OS一样,是十分复杂的特大型系统软件,其中逻辑关系之复杂
: 不是没接触过的人可以想象的。

avatar
d*y
23
WELL,同样的话对于OS一样合适。
如果你说OS也简单,那没问题。
看问题角度不一样而已。

【在 g*****g 的大作中提到】
: RDBS有很复杂的,但大部分的代码在于外延。
: 核心的部分无非是存储管理,内存管理,连接池,交易,SQL解释器。

avatar
g*g
24
"数据库核心的部分并不是一个很大的项目"
这是我最初说的东西,我认为不是很大,你非说光编译要几个小时。

【在 d****y 的大作中提到】
: WELL,同样的话对于OS一样合适。
: 如果你说OS也简单,那没问题。
: 看问题角度不一样而已。

avatar
d*y
25
看你这个核心怎么定义?如果是一般而言DBS Kernal的话,几个小时编译一点问题没有。
如果你说是你做的数据库或者简单嵌入式数据库的核心,你可以实现得很简单。
回到起始,笼统的说 "数据库核心的部分并不是一个很大的项目", 是不能让人信服的。
我猜你想说的实际是“数据库最基本的核心功能..."

【在 g*****g 的大作中提到】
: "数据库核心的部分并不是一个很大的项目"
: 这是我最初说的东西,我认为不是很大,你非说光编译要几个小时。

avatar
g*l
26
Java can not be used to write DB kernel. For example, how to use Java to
manage memory, which is very important for DB?

【在 f******2 的大作中提到】
: 数据库接口,java的确做的比其他语言的lib好很多,所以数据库应用java成为
: 首选正义不大。
: 可是数据库的内核,有些open source的database,甚至
: in-memory database也用java写,估计是和游击队没有
: 办法大兵团作战的性质有关。berkeley DB是c写的,虽然也
: 是open source家族,进入特殊领域的主流,这恐怕就是区别。
: 想问问java高手们,有商业数据库内核用java实现的吗?

avatar
F*n
27
WINDOWS的核心程序可以拷在几张软盘上。

【在 d****y 的大作中提到】
: 那些显然是不能叫数据库的。
: 你总不能说些了点文件管理,内存管理之类,就说自己做了个OS吧。

avatar
J*n
28
ding
avatar
w*e
29
Kernal RDBMS is way more complicated than what you said. The toy you implemented in school can not be called RDBMS.
optimizer, compiler, code generation, execution layer (serial execution,
parallel execution), data layer are much more complicated than what you
thought, not to mention transaction, materialized view, language support,
manageability, etc.

【在 g*****g 的大作中提到】
: RDBS有很复杂的,但大部分的代码在于外延。
: 核心的部分无非是存储管理,内存管理,连接池,交易,SQL解释器。

avatar
w*e
30
我觉得严格说,dbms不是仅仅是os之上的application,
如果真的要上规模的话,要改很多os里面的东西。
用java写可能会有很多限制,当然,如果只是
小规模的应用的话,用java也可能满足要求了。

【在 f******2 的大作中提到】
: 可否关键部分用java写,然后把代码用GCJ编译成binary?这样的好处是
: --java programmer的开发效率高写
: --完全编译成binary后runtime footprint 小。
: GCJ编译出来的东西比正常C++binary效率低多少

avatar
F*n
31
Most things you mention are not core of RDBMS

implemented in school can not be called RDBMS.

【在 w*********e 的大作中提到】
: Kernal RDBMS is way more complicated than what you said. The toy you implemented in school can not be called RDBMS.
: optimizer, compiler, code generation, execution layer (serial execution,
: parallel execution), data layer are much more complicated than what you
: thought, not to mention transaction, materialized view, language support,
: manageability, etc.

avatar
w*e
32
you must be kidding me, have you every touched any core RDBMS code?

【在 F****n 的大作中提到】
: Most things you mention are not core of RDBMS
:
: implemented in school can not be called RDBMS.

avatar
g*g
33
No, but Apache Derby is recognized as a RDBMS everywhere, and
Derby core is only 2M bytecode. It can't be rocket science.

【在 w*********e 的大作中提到】
: you must be kidding me, have you every touched any core RDBMS code?
avatar
w*e
34
as other ppl said, it is just like an embedded OS VS a
full-fledged OS like linux&windows.
you cannot judge complexity of kernal RDBMS by Derby.
If derby is recoginized as a RDBMS everywhere, why shall we
have DB2, ORacle, SQL Server, and even lower-end mysql?
anyway, it is all about how you look at the word "KERNAL".
for me, a "KERNAL" RDBMS shall at least cover from parser,
compiler, code-generation, execution to data layer, with
support of the core set of ANSI SQL.
Even without transaction

【在 g*****g 的大作中提到】
: No, but Apache Derby is recognized as a RDBMS everywhere, and
: Derby core is only 2M bytecode. It can't be rocket science.

avatar
s*c
35
你说的很多都不算内核。

【在 w*********e 的大作中提到】
: as other ppl said, it is just like an embedded OS VS a
: full-fledged OS like linux&windows.
: you cannot judge complexity of kernal RDBMS by Derby.
: If derby is recoginized as a RDBMS everywhere, why shall we
: have DB2, ORacle, SQL Server, and even lower-end mysql?
: anyway, it is all about how you look at the word "KERNAL".
: for me, a "KERNAL" RDBMS shall at least cover from parser,
: compiler, code-generation, execution to data layer, with
: support of the core set of ANSI SQL.
: Even without transaction

avatar
g*g
36
From wiki:
The core of the technology, Derby’s database engine is a full functioned
relational embedded database engine
Not saying Derby is as sophiscated as Oracle, DB2 etc., but Derby demos
the core of an RDBMS regardless.

【在 w*********e 的大作中提到】
: as other ppl said, it is just like an embedded OS VS a
: full-fledged OS like linux&windows.
: you cannot judge complexity of kernal RDBMS by Derby.
: If derby is recoginized as a RDBMS everywhere, why shall we
: have DB2, ORacle, SQL Server, and even lower-end mysql?
: anyway, it is all about how you look at the word "KERNAL".
: for me, a "KERNAL" RDBMS shall at least cover from parser,
: compiler, code-generation, execution to data layer, with
: support of the core set of ANSI SQL.
: Even without transaction

avatar
w*e
37
Even wiki can serve as proof, please read carefully.
It said "embedded database engine".
你可以从embedded os的复杂度来推断windows, linux kernal的复杂度吗?

【在 g*****g 的大作中提到】
: From wiki:
: The core of the technology, Derby’s database engine is a full functioned
: relational embedded database engine
: Not saying Derby is as sophiscated as Oracle, DB2 etc., but Derby demos
: the core of an RDBMS regardless.

avatar
w*e
38
LOL, you can define whatever kernal you want.

【在 s***c 的大作中提到】
: 你说的很多都不算内核。
avatar
g*g
39
LOL, embeded in java is a term that says something can be run
in the same JVM as your main module, and can be easily packaged
and ported everywhere, as opposed to a separate service running
in a different JVM. It doesn't hint the capability is limited.
e.g. Tomcat cannot be embeded, Jetty can.
Derby can serve as a stand alone network server too.

【在 w*********e 的大作中提到】
: Even wiki can serve as proof, please read carefully.
: It said "embedded database engine".
: 你可以从embedded os的复杂度来推断windows, linux kernal的复杂度吗?

avatar
w*e
40
那你还不如说有的embedded os很简单就等于linux/windows/unix os kernal也很简单
了。一个极端的例子,linux kernal里面process scheduling最核心的部分也就是100
多行,一个作业量而已,连course project也算不上,按照你的逻辑,os的kernal也挺
简单的,一个course project而已。其他都是你所谓的“外延”么
可以作为stand alone network server 不等于就是一个rdbms了,前面说了,
只有一个很基本的query/data storage功能的东西远远称不上rdbms。
好了多说无益,你可以找本基本的db教科书看看,看看rdbms至少应该包括些什么。当
然了,你可以有自己的rdbms的定义,你也可以认为所谓的kernal rdbms就是2M
bytecode那点东西,前面有网友说了,看问题的角度不一样,我只是觉得你对kernal和
所谓“外延”的定义非常奇怪而已。

【在 g*****g 的大作中提到】
: LOL, embeded in java is a term that says something can be run
: in the same JVM as your main module, and can be easily packaged
: and ported everywhere, as opposed to a separate service running
: in a different JVM. It doesn't hint the capability is limited.
: e.g. Tomcat cannot be embeded, Jetty can.
: Derby can serve as a stand alone network server too.

avatar
F*n
41
我前面说过,Windows, Linux的核心程序都只有几M,其他都是Driver, 图形驱动,和
其他延伸程序。我做过Postgre的MODULE, 确实没做过核心的,因为核心确实是很小(
但很关键)的一部分,大部分加个INDEXER什么的都不会接触到。

【在 w*********e 的大作中提到】
: Even wiki can serve as proof, please read carefully.
: It said "embedded database engine".
: 你可以从embedded os的复杂度来推断windows, linux kernal的复杂度吗?

avatar
F*n
42
你确实比较无知。

100

【在 w*********e 的大作中提到】
: 那你还不如说有的embedded os很简单就等于linux/windows/unix os kernal也很简单
: 了。一个极端的例子,linux kernal里面process scheduling最核心的部分也就是100
: 多行,一个作业量而已,连course project也算不上,按照你的逻辑,os的kernal也挺
: 简单的,一个course project而已。其他都是你所谓的“外延”么
: 可以作为stand alone network server 不等于就是一个rdbms了,前面说了,
: 只有一个很基本的query/data storage功能的东西远远称不上rdbms。
: 好了多说无益,你可以找本基本的db教科书看看,看看rdbms至少应该包括些什么。当
: 然了,你可以有自己的rdbms的定义,你也可以认为所谓的kernal rdbms就是2M
: bytecode那点东西,前面有网友说了,看问题的角度不一样,我只是觉得你对kernal和
: 所谓“外延”的定义非常奇怪而已。

avatar
g*g
43
wiki上写的很清楚是full functional RDBMS. 怕是你的
定义跟别人不一样吧。这个embedded跟embeded OS的embedded
完全不一样,你非扯一块不是显得外行吗。

100

【在 w*********e 的大作中提到】
: 那你还不如说有的embedded os很简单就等于linux/windows/unix os kernal也很简单
: 了。一个极端的例子,linux kernal里面process scheduling最核心的部分也就是100
: 多行,一个作业量而已,连course project也算不上,按照你的逻辑,os的kernal也挺
: 简单的,一个course project而已。其他都是你所谓的“外延”么
: 可以作为stand alone network server 不等于就是一个rdbms了,前面说了,
: 只有一个很基本的query/data storage功能的东西远远称不上rdbms。
: 好了多说无益,你可以找本基本的db教科书看看,看看rdbms至少应该包括些什么。当
: 然了,你可以有自己的rdbms的定义,你也可以认为所谓的kernal rdbms就是2M
: bytecode那点东西,前面有网友说了,看问题的角度不一样,我只是觉得你对kernal和
: 所谓“外延”的定义非常奇怪而已。

avatar
s*c
44
大家都是技术人员,没必要抬杠了。
话说回来,我见过prolog写的数据库内核,很小. prolog虽然慢,但由于CONCURRENY
CONTROL算法与现有RDBMS不同,整体性能相当好。
avatar
s*n
45
我觉的你们发错版了,讨论的是哲学问题,比如玩具汽车算不算汽车,包不包含汽车的
“核心技术”。
avatar
b*y
46
我曾经研究过用java写relational database engine, 也实践过。作为真正工业界用途
来讲,java对performance还不是特别的有优势。我研究过的java db engine 有HSql,
Cloudscape等等。
我觉得,数据库和操作系统,还是要用c来写。毕竟可以管理内存。java的内存管理自
动化,也就不可能作为system programming language.
avatar
w*e
47
只剩下谩骂, 你这种人来谈什么 rdbms kernal真是joke

【在 F****n 的大作中提到】
: 你确实比较无知。
:
: 100

avatar
w*e
48
我也是闲的慌,和你这种Wiki也拿来当标准的的讨论。
还是建议你多看看书把,没事看看mysql, postgrel的code,
看看一个一个rdbms kernal的复杂度到底有多少,
别弄个COURSE PROJ就出来张口判断RMDBS KERNAL的复杂度了。

【在 g*****g 的大作中提到】
: wiki上写的很清楚是full functional RDBMS. 怕是你的
: 定义跟别人不一样吧。这个embedded跟embeded OS的embedded
: 完全不一样,你非扯一块不是显得外行吗。
:
: 100

avatar
w*e
49
对kernal理解不同也挺正常,
但是如果不同意别人对rdbms kernal 的定义,
那说说他自己对kernal的定义好了,
但是什么都说不出,要不就是谩骂,
要不就是拿出wiki上对一个derby的定义来当证据,
有些人只是玩了个玩具汽车(怕是连玩具的原理都没搞明白)
就开始论断汽车的“kernal”复杂度只是一个玩具大小了。

【在 s******n 的大作中提到】
: 我觉的你们发错版了,讨论的是哲学问题,比如玩具汽车算不算汽车,包不包含汽车的
: “核心技术”。

avatar
g*g
50
所谓RDBMS,就是数据存储成表状,对接口的要求一般就是支持
SQL。我举的索引你觉得没用,那就请举一个你觉得公认的定义
大家看看,总不成你的理解就是圣经了吧。
我看你说的这个要吗什么都说不出,要不就是谩骂总结得很好。

【在 w*********e 的大作中提到】
: 对kernal理解不同也挺正常,
: 但是如果不同意别人对rdbms kernal 的定义,
: 那说说他自己对kernal的定义好了,
: 但是什么都说不出,要不就是谩骂,
: 要不就是拿出wiki上对一个derby的定义来当证据,
: 有些人只是玩了个玩具汽车(怕是连玩具的原理都没搞明白)
: 就开始论断汽车的“kernal”复杂度只是一个玩具大小了。

avatar
c*t
51
强烈鄙视连 kernel 都拼写不对的人 :) 你好像篇篇都是将其拼错。
也猜不出怎么可能把 postgres 拼成 postgrel 。。。RMDBS 更。。。
你该没学过打字吧。。。

【在 w*********e 的大作中提到】
: 我也是闲的慌,和你这种Wiki也拿来当标准的的讨论。
: 还是建议你多看看书把,没事看看mysql, postgrel的code,
: 看看一个一个rdbms kernal的复杂度到底有多少,
: 别弄个COURSE PROJ就出来张口判断RMDBS KERNAL的复杂度了。

avatar
w*e
52
ok, 你的定义(表装数据+sql)能不能称为rdbms kernal我们暂且不论,
就算依据你的定义好了,把什么索引,buffer management, optimizer, statistics,
code generation,全部扔掉, 2M bytecode能支持ANSI SQL的
pipeline execution吗?你对SQL有多少概念?
再一次用你自己的例子,你自己去看看derby,
仅仅就是表装table和sql,derby用了多少code

【在 g*****g 的大作中提到】
: 所谓RDBMS,就是数据存储成表状,对接口的要求一般就是支持
: SQL。我举的索引你觉得没用,那就请举一个你觉得公认的定义
: 大家看看,总不成你的理解就是圣经了吧。
: 我看你说的这个要吗什么都说不出,要不就是谩骂总结得很好。

avatar
g*g
53
我让你找一个你觉得合适的DB kernel的定义让大家看看,你
废话了两天了还找不出来。我是来学习,不是来跟你辩论的,
如果你找不出来,就不要浪费大家时间了。
至于这derby core能干啥,人wiki上写了。
Derby Embedded Database Engine
The core of the technology, Derby’s database engine is a full functioned
relational embedded database engine. JDBC and SQL are the programming APIs.
It has IBM DB2 SQL syntax.

【在 w*********e 的大作中提到】
: ok, 你的定义(表装数据+sql)能不能称为rdbms kernal我们暂且不论,
: 就算依据你的定义好了,把什么索引,buffer management, optimizer, statistics,
: code generation,全部扔掉, 2M bytecode能支持ANSI SQL的
: pipeline execution吗?你对SQL有多少概念?
: 再一次用你自己的例子,你自己去看看derby,
: 仅仅就是表装table和sql,derby用了多少code

avatar
w*e
54
不是和你说了么,你要学习jiu自己去看看基本的db教科书把,
那上面大部分章节加起来就是一个基本的rdbms kernal.
你自己非要编造自己定义(表装table+sql),别人也没办法.
而且就算你自己的定义,也根本没办法支持你的结论

.

【在 g*****g 的大作中提到】
: 我让你找一个你觉得合适的DB kernel的定义让大家看看,你
: 废话了两天了还找不出来。我是来学习,不是来跟你辩论的,
: 如果你找不出来,就不要浪费大家时间了。
: 至于这derby core能干啥,人wiki上写了。
: Derby Embedded Database Engine
: The core of the technology, Derby’s database engine is a full functioned
: relational embedded database engine. JDBC and SQL are the programming APIs.
: It has IBM DB2 SQL syntax.

avatar
g*g
55
呵呵,网上的都是错的,还要我自己去找教科书。
大哥,行为艺术有个度好不好,这是技术版块,
不太合适。

【在 w*********e 的大作中提到】
: 不是和你说了么,你要学习jiu自己去看看基本的db教科书把,
: 那上面大部分章节加起来就是一个基本的rdbms kernal.
: 你自己非要编造自己定义(表装table+sql),别人也没办法.
: 而且就算你自己的定义,也根本没办法支持你的结论
:
: .

avatar
w*e
56
什么行为艺术?? 我前面不是说了rdbms的kernal应该包括什么么
这也是任何一个db教科书应该有的内容,你连这个都不知道还谈什么别的?
这里是技术板块,你也稍微作点rdbms的kernal工作再来论断rdbms的复杂度吧。
没看过也没改过任何rdbms kernal code,那你看看db教科书总可以把。
连书都不愿意看,还高谈阔论什么rdbms kernal呢?
算了,不说了, 和你这样的说话真是够累的。

【在 g*****g 的大作中提到】
: 呵呵,网上的都是错的,还要我自己去找教科书。
: 大哥,行为艺术有个度好不好,这是技术版块,
: 不太合适。

avatar
g*g
57
绕来绕去还是您说了算,网上都是错的,只有您的定义跟教科书是一样的。
我也没啥好说的了。

【在 w*********e 的大作中提到】
: 什么行为艺术?? 我前面不是说了rdbms的kernal应该包括什么么
: 这也是任何一个db教科书应该有的内容,你连这个都不知道还谈什么别的?
: 这里是技术板块,你也稍微作点rdbms的kernal工作再来论断rdbms的复杂度吧。
: 没看过也没改过任何rdbms kernal code,那你看看db教科书总可以把。
: 连书都不愿意看,还高谈阔论什么rdbms kernal呢?
: 算了,不说了, 和你这样的说话真是够累的。

avatar
d*y
58
最初接触DOS的时候,也觉得那就是操作系统了,后来学了基本OS课程,自己认为D
OS不是个完整的OS。
同样咱也不把Delby之类叫做完整的DBMS,也就是说它没完全实现DBMS的核心功能。

【在 g*****g 的大作中提到】
: RDBS有很复杂的,但大部分的代码在于外延。
: 核心的部分无非是存储管理,内存管理,连接池,交易,SQL解释器。

avatar
g*g
59
没人要拿Derby跟oracle比特性,但说Derby没实现数据库内核就是瞎说了。
就跟说Dos没实现OS内核一样。

【在 d****y 的大作中提到】
: 最初接触DOS的时候,也觉得那就是操作系统了,后来学了基本OS课程,自己认为D
: OS不是个完整的OS。
: 同样咱也不把Delby之类叫做完整的DBMS,也就是说它没完全实现DBMS的核心功能。

avatar
T*g
60
re

【在 c*****t 的大作中提到】
: 说实在,你倒是让人一个外行的感觉。
: 你有空的话看看 sqlite 或者 postgresql 的代码就知道了。
: 一个是 memory management 。想靠 garbage collection 是不行的。postgresql
: 用的是 memory context,这样 free 的话基本上不花时间,也避免 memory leak 。
: database 里面 memory / cache management 是极端重要的。
: 另外,速度很容易被放大的。比如 A 用 C 写来 access tuple 里的某个 column
: 是用 macro,direct cast 只要几个 op,而 B 用 Java 就得 N 多步骤。有 1000
: tuple 恐怕还没太大不同,1million 就很不一样了。更不用说 memory 方面。
: 所以 posgresql 里面大量运用 macro 。
: 我以前做过个实验,把直接调用 postgresql 里面几个 api 改成跳过,直接用

avatar
m*t
61

Finally... I didn't want to say anything because I normally don't
pick on people's spelling, but I really think that if people choose
to post in a condescending tone and keep referring others to
"basic dbms textbooks," they should probably also make sure
they got right the one keyword that the whole debate is about.

【在 c*****t 的大作中提到】
: 强烈鄙视连 kernel 都拼写不对的人 :) 你好像篇篇都是将其拼错。
: 也猜不出怎么可能把 postgres 拼成 postgrel 。。。RMDBS 更。。。
: 你该没学过打字吧。。。

avatar
w*e
62
那时因为我的输入法不太方便几个间切换来切换去,不过你也太无聊了把

【在 c*****t 的大作中提到】
: 强烈鄙视连 kernel 都拼写不对的人 :) 你好像篇篇都是将其拼错。
: 也猜不出怎么可能把 postgres 拼成 postgrel 。。。RMDBS 更。。。
: 你该没学过打字吧。。。

avatar
g*g
63
Not being mean, but it's hard to imagine what can make
"kernal" easier to type than kernel.

【在 w*********e 的大作中提到】
: 那时因为我的输入法不太方便几个间切换来切换去,不过你也太无聊了把
avatar
w*e
64
别浪费时间了,他不要说没有接触过数据库内核code,连derby能作什么都没有搞清楚
,只会硬凹引用那个wiki “2m bytecode”来论断数据库的复杂度,
其实就算依照他自己的对“核心”的定义,“2m bytecode”也远远不够。

【在 d****y 的大作中提到】
: 最初接触DOS的时候,也觉得那就是操作系统了,后来学了基本OS课程,自己认为D
: OS不是个完整的OS。
: 同样咱也不把Delby之类叫做完整的DBMS,也就是说它没完全实现DBMS的核心功能。

avatar
g*g
65
hehe, the entire internet is a waste anyway as there ain't
even an accurate definition for RDBMS core per se.

【在 w*********e 的大作中提到】
: 别浪费时间了,他不要说没有接触过数据库内核code,连derby能作什么都没有搞清楚
: ,只会硬凹引用那个wiki “2m bytecode”来论断数据库的复杂度,
: 其实就算依照他自己的对“核心”的定义,“2m bytecode”也远远不够。

avatar
w*e
66
还什么entire internet,wiki这种可以随便改的上面的一句话也能代表entire
internet了.
说的不好听一点,你对os和rdbms的内核基本上都是一无所知,
我相信你连那derby 那2M bytecode是干什么的也没搞清楚过.

【在 g*****g 的大作中提到】
: hehe, the entire internet is a waste anyway as there ain't
: even an accurate definition for RDBMS core per se.

avatar
w*e
67
不是说了么,办公室机器切换不方便所以只好每次copy-paste,
不过关个水还要纠缠这个,你也太无聊了把。

【在 g*****g 的大作中提到】
: Not being mean, but it's hard to imagine what can make
: "kernal" easier to type than kernel.

avatar
g*g
68
wiki can be wrong, but you insist I have to find the definition
on textbook and textbook only, even after I ask for a reference.
I have to assume the entire internet is wrong.

【在 w*********e 的大作中提到】
: 还什么entire internet,wiki这种可以随便改的上面的一句话也能代表entire
: internet了.
: 说的不好听一点,你对os和rdbms的内核基本上都是一无所知,
: 我相信你连那derby 那2M bytecode是干什么的也没搞清楚过.

avatar
w*e
69
什么逻辑,一个wiki能推出entire internet is wrong.吗?
我建议你去看code你又不去,那我除了建议你看教科书还能怎么办?

【在 g*****g 的大作中提到】
: wiki can be wrong, but you insist I have to find the definition
: on textbook and textbook only, even after I ask for a reference.
: I have to assume the entire internet is wrong.

avatar
g*g
70
I ASK several times, show me the right reference if wiki is wrong.
There ain't even one available on Internet that makes it right?
If you can't do it, this conversation is over, there's no need
to argue just for argue's sake.

【在 w*********e 的大作中提到】
: 什么逻辑,一个wiki能推出entire internet is wrong.吗?
: 我建议你去看code你又不去,那我除了建议你看教科书还能怎么办?

avatar
c*t
71
最近没事?跟他争个啥劲?就是一挖坑的。什么是 RDBMS,看看 Codd's
rules 就是了。

【在 g*****g 的大作中提到】
: I ASK several times, show me the right reference if wiki is wrong.
: There ain't even one available on Internet that makes it right?
: If you can't do it, this conversation is over, there's no need
: to argue just for argue's sake.

avatar
j*i
72
So you think you can implement all Codd's rules in 2M bytecode(or a course
project, whatever)?
You don't even know the difference between an RDBMS and relational algebra.

【在 c*****t 的大作中提到】
: 最近没事?跟他争个啥劲?就是一挖坑的。什么是 RDBMS,看看 Codd's
: rules 就是了。

avatar
j*i
73
Following the thread, I think both daisyy and whisper have answered your questions several times.
You just repeated asking the same question over and over regardless of
responses from others.
If you do not wanna read source code or textbooks, you can go over
"Architecture of a Database System"
a recent however terrific paper by Joe. Hellerstein and Michael Stonebraker.
Specifically, you can read Section 4 to understand what the core RDBMS is.
By no means you can implement the core logic of RDBMS

【在 g*****g 的大作中提到】
: I ASK several times, show me the right reference if wiki is wrong.
: There ain't even one available on Internet that makes it right?
: If you can't do it, this conversation is over, there's no need
: to argue just for argue's sake.

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。