apache / apache/arrow-java

[Java] JDBC driver too large

未關閉
#120 4 則留言 0 個 reaction 已指派 0 人 在 GitHub 檢視
主要語言
Java
星號
94
分支
152
平均合併
3 天 16 小時
30 天內合併 PR
11

描述

### Describe the bug, including details regarding any error messages, version, and platform.

If you add flight-sql-jdbc-driver as a dependency to a java appllication it pulls in 70MB of dependencies including 8 platform specific versions of netty and 1000s of files. H2 database which includes a JDBC driver and a database engine is 2.5MB. If you want smaller, here is JDBC implemented as a single file (https://github.com/KxSystems/kdb/blob/master/c/jdbc.java), this is used by 100s of users globally.

I admire the idea of a common data format but tying it to a 70MB verbose implementation when someone just wants a java driver isn't convincing me.

Eclipse, apache, google, gson, flatbuffer - it's basically every popular java dependency in the world.

- **There's a 256kb suffix list text file from mozilla in there.** What's that for? No attempt has been made at crafting something beautiful. 256kb is 10% of the size of H2 database and JDBC driver.
- 13 MB for platform specific nettys is larger than 80% of other database drivers alone. (screenshot below)

![image](https://github.com/apache/arrow-java/assets/7273208/0a33e1c5-e6f2-48f0-9936-f8b42a11e64e)

mozilla\public-suffix-list.txt

```
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at https://mozilla.org/MPL/2.0/.

// Please pull this list from, and only from https://publicsuffix.org/list/public_suffix_list.dat,
// rather than any other VCS sites. Pulling from any other URL is not guaranteed to be supported.

// Instructions on pulling and using this list can be found at https://publicsuffix.org/list/.

// ===BEGIN ICANN DOMAINS===

// ac : http://nic.ac/rules.htm
ac
com.ac
edu.ac
gov.ac
net.ac
mil.ac
org.ac

// ad : https://en.wikipedia.org/wiki/.ad
ad
nom.ad

// ae : https://tdra.gov.ae/en/aeda/ae-policies
ae
co.ae
net.ae
org.ae
sch.ae
ac.ae
```

Platform specific netty takes 13MB.

![image](https://github.com/apache/arrow-java/assets/7273208/2cbe8008-b39f-4a37-9e26-b247f0733689)

### Component(s)

Java

貢獻指南

開啟貢獻指南

研究方向

首先檢查 flight-sql-jdbc-driver 的相依性樹狀結構,特別注意 mozilla/public-suffix-list.txt 以及報告中提到的平台特定 Netty 成品。確認哪些相依性造成了所回報的大小,並檢視 JDBC 驅動程式的封裝進入點。在不破壞 Java JDBC 驅動程式的情況下,達成一項已取得共識且可量化的相依性占用縮減,才算完成。

由索引模型根據 Issue 內容生成。

評估

技術堆疊
java
領域
databases
Issue 類型
缺陷
難度
5/5
預估耗時
一週以上
活躍度
停滯
描述清晰度
需要釐清
新手友好度
25/100

把新 issue 寄到你的電子郵件信箱

精選適合新手參與的 GitHub issue 摘要。