{"id":29571854,"url":"https://github.com/oceanbase/obvec_jdbc","last_synced_at":"2025-07-19T04:36:20.984Z","repository":{"id":278180263,"uuid":"918000066","full_name":"oceanbase/obvec_jdbc","owner":"oceanbase","description":"Java SDK for OceanBase Vector Store \u0026 JSON Table","archived":false,"fork":false,"pushed_at":"2025-04-21T11:14:52.000Z","size":75,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-04-21T12:28:03.400Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/oceanbase.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-01-17T03:45:34.000Z","updated_at":"2025-04-21T11:14:55.000Z","dependencies_parsed_at":"2025-02-18T12:39:44.687Z","dependency_job_id":"07c60a1a-5285-494c-a747-875a7105a8e8","html_url":"https://github.com/oceanbase/obvec_jdbc","commit_stats":null,"previous_names":["oceanbase/obvec_jdbc"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/oceanbase/obvec_jdbc","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oceanbase%2Fobvec_jdbc","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oceanbase%2Fobvec_jdbc/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oceanbase%2Fobvec_jdbc/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oceanbase%2Fobvec_jdbc/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/oceanbase","download_url":"https://codeload.github.com/oceanbase/obvec_jdbc/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oceanbase%2Fobvec_jdbc/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265889155,"owners_count":23844539,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-07-19T04:36:20.309Z","updated_at":"2025-07-19T04:36:20.960Z","avatar_url":"https://github.com/oceanbase.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# obvec_jdbc\n\nA JAVA SDK for OceanBase Vector Store and JSON virtual table.\n\n## Installation\n\n- Install with Maven:\n\n1. Add a dependency in your project's `pom.xml` file.\n\n```\n\u003cdependency\u003e\n  \u003cgroupId\u003ecom.oceanbase\u003c/groupId\u003e\n  \u003cartifactId\u003eobvec_jdbc\u003c/artifactId\u003e\n  \u003cversion\u003e1.0.7\u003c/version\u003e\n\u003c/dependency\u003e\n```\n\n- Install with source code:\n\n1. Install sdk with maven.  \n\n```\ngit clone https://github.com/oceanbase/obvec_jdbc.git\ncd obvec_jdbc\nmvn install\n```\n\n2. Add a dependency in your project's `pom.xml` file (make sure the groupId and artifactId match those of the library you cloned).\n\n```\n\u003cdependency\u003e\n  \u003cgroupId\u003ecom.oceanbase\u003c/groupId\u003e\n  \u003cartifactId\u003eobvec_jdbc\u003c/artifactId\u003e\n  \u003cversion\u003e1.0.7\u003c/version\u003e\n\u003c/dependency\u003e\n```\n\n## Usage\n\n### SDK for OceanBase Vector Store\n\n- Setup a client\n\n```java\nimport com.oceanbase.obvec_jdbc.ObVecClient;\n\nString uri = \"jdbc:oceanbase://127.0.0.1:2881/test\";\nString user = \"root@test\";\nString password = \"\";\nString tb_name = \"JAVA_TEST\";\n\nObVecClient ob = new ObVecClient(uri, user, password);\n```\n\n- Vector table schema definition\n\n```java\nimport com.oceanbase.obvec_jdbc.DataType;\nimport com.oceanbase.obvec_jdbc.ObCollectionSchema;\nimport com.oceanbase.obvec_jdbc.ObFieldSchema;\n\nObCollectionSchema collectionSchema = new ObCollectionSchema();\nObFieldSchema c1_field = new ObFieldSchema(\"c1\", DataType.INT32);\nc1_field.IsPrimary(true).IsAutoInc(true);\nObFieldSchema c2_field = new ObFieldSchema(\"c2\", DataType.FLOAT_VECTOR);\nc2_field.Dim(3).IsNullable(false);\nObFieldSchema c3_field = new ObFieldSchema(\"c3\", DataType.JSON);\nc3_field.IsNullable(true);\ncollectionSchema.addField(c1_field);\ncollectionSchema.addField(c2_field);\ncollectionSchema.addField(c3_field);\n```\n\n- Create the table with a `vector index`\n\n```java\nimport com.oceanbase.obvec_jdbc.IndexParam;\nimport com.oceanbase.obvec_jdbc.IndexParams;\n\nIndexParams index_params = new IndexParams();\nIndexParam index_param = new IndexParam(\"vidx1\", \"c2\");\nindex_params.addIndex(index_param);\ncollectionSchema.setIndexParams(index_params);\n\nob.createCollection(tb_name, collectionSchema);\n```\n\n- Insert data\n\n```java\nimport com.oceanbase.obvec_jdbc.SqlInteger;\nimport com.oceanbase.obvec_jdbc.SqlText;\nimport com.oceanbase.obvec_jdbc.SqlVector;\nimport com.oceanbase.obvec_jdbc.Sqlizable;\n\nArrayList\u003cSqlizable[]\u003e insert_rows = new ArrayList\u003c\u003e();\nSqlizable[] ir1 = { new SqlVector(new float[] {1.0f, 2.0f, 3.0f}), new SqlText(\"{\\\"doc\\\": \\\"oceanbase doc 1\\\"}\") };\ninsert_rows.add(ir1);\nSqlizable[] ir2 = { new SqlVector(new float[] {1.1f, 2.2f, 3.3f}), new SqlText(\"{\\\"doc\\\": \\\"oceanbase doc 2\\\"}\") };\ninsert_rows.add(ir2);\nSqlizable[] ir3 = { new SqlVector(new float[] {0f, 0f, 0f}), new SqlText(\"{\\\"doc\\\": \\\"oceanbase doc 3\\\"}\") };\ninsert_rows.add(ir3);\nob.insert(tb_name, new String[] {\"c2\", \"c3\"}, insert_rows);\n```\n\n- Perform vector ann search\n\n```java\nArrayList\u003cHashMap\u003cString, Sqlizable\u003e\u003e res = ob.query(tb_name, \"c2\", \"l2\", \n            new float[] {0f, 0f, 0f}, 10,\n            new String[] {\"c1\", \"c3\", \"c2\"},\n            new DataType[] {\n            DataType.INT32,\n            DataType.JSON,\n            DataType.FLOAT_VECTOR\n            });\nif (res != null) {\n    for (int i = 0; i \u003c res.size(); i++) {\n        // System.err.printf(\"%s\");\n        for (HashMap.Entry\u003cString, Sqlizable\u003e entry : res.get(i).entrySet()) {\n            System.out.printf(\"%s : %s, \", entry.getKey(), entry.getValue().toString());\n        }\n        System.out.print(\"\\n\");\n    }\n} else {\n    System.out.println(\"res is null\");\n}\n```\n\n- Delete data\n\n```java\nArrayList\u003cSqlizable\u003e ids = new ArrayList\u003c\u003e();\nids.add(new SqlInteger(2));\nids.add(new SqlInteger(1));\nob.delete(tb_name, \"c1\", ids);\n```\n\n### SDK for JSON Virtual Table\n\n- Setup a client\n\n```java\nimport com.oceanbase.obvec_jdbc.ObVecJsonClient;\n\nString uri = \"jdbc:oceanbase://127.0.0.1:2881/test\";\nString user = \"root@test\";\nString password = \"\";\nObVecJsonClient client = new ObVecJsonClient(uri, user, password, 0, Level.INFO);\n```\n\n- Perform virtual table SQL (Only DDL is supported for JAVA SDK)\n\n```java\nString sql = \"create table `t2` (c1 int NOT NULL DEFAULT 10, c2 varchar(30) DEFAULT 'ca', c3 varchar not null, c4 decimal(10, 2), c5 timestamp default current_timestamp);\";\nclient.parseJsonTableSQL2NormalSQL(sql);\n\nsql = \"ALTER TABLE t2 CHANGE COLUMN c2 changed_col INT\";\nclient.parseJsonTableSQL2NormalSQL(sql);\n\nsql = \"ALTER TABLE t2 DROP c1\";\nclient.parseJsonTableSQL2NormalSQL(sql);\n\nsql = \"ALTER TABLE t2 MODIFY COLUMN changed_col TIMESTAMP NOT NULL DEFAULT current_timestamp\";\nclient.parseJsonTableSQL2NormalSQL(sql);\n\nsql = \"ALTER TABLE t2 ADD COLUMN email VARCHAR(100) default 'example@example.com'\";\nclient.parseJsonTableSQL2NormalSQL(sql);\n\nsql = \"ALTER TABLE t2 RENAME TO alter_test\";\nclient.parseJsonTableSQL2NormalSQL(sql);\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foceanbase%2Fobvec_jdbc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Foceanbase%2Fobvec_jdbc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foceanbase%2Fobvec_jdbc/lists"}