2021年2月25日木曜日

SednaのXQueryバージョンがちょっと古い・・・まぁ問題ないんだけど

 golangで作ったRESTfulサーバにアクセスし、結果をJSONで戻してみた。

takahiro@takahiro-Virtual-Machine:~/gorest/src$ curl -i localhost:5000/foodstuff?foodname="りんご"

HTTP/1.1 200 OK

Content-Tye: application/json

Date: Thu, 25 Feb 2021 10:47:59 GMT

Content-Length: 769

Content-Type: text/plain; charset=utf-8

{"food": [{"food_id": "7148", "foodname": "りんご 皮なし 生"}, {"food_id": "7176", "foodname": "りんご 皮つき 生"}, {"foodname": "りんご 皮つき 焼き", "food_id": "7180"}, {"food_id": "7149", "foodname": "りんご 果実飲料 ストレートジュース"}, {"food_id": "7150", "foodname": "りんご 果実飲料 濃縮還元ジュース"}, {"food_id": "7151", "foodname": "りんご 果実飲料 50%果汁入り飲料"}, {"food_id": "7152", "foodname": "りんご 果実飲料 30%果汁入り飲料"}, {"food_id": "7153", "foodname": "りんご 缶詰"}, {"food_id": "7154", "foodname": "りんご ジャム"}, {"food_id": "17018", "foodname": "<調味料類> (食酢類) 果実酢 りんご酢"}]}

実はSedna XML DatabaseのSerialization機能を使ってJSONを戻そうとしたのだけど、Sedna の XQuryのバージョンが1.0らしく、3.0以降の機能が使えない、、、

つまり、SerializationでJSONとか指定できない、、、

仕方ないので、一度 Sedna から受け取ったXMLをgolangでJSONに変換し、ヘッダにapplication/jsonを設定して戻すこととした。

動きは上記の通り、

Curlでリクエストを投げ、結果がJSONでちゃんと戻っている。

今回はこれで事足りるんだけど、いずれ、何でもできるように SednaのXQueryを3.1などに対応させないとダメかもしれない。

Go でRestAPI (DBはSedna XML Database)


今作ってるやつ
golangでRestAPI

cgoからsedna xml databaseのクエリ実行

結果を取得まで

まだ結果をJSONにしてない
XQueryのシリアライズで出来るかも?

まだ脆弱性ありまくり

2021年2月7日日曜日

Sedba XML Database 再び

ちょっと作りたいサイトがあって、マイクロサービスを用意しようと思って、golang使ってたんだけど、DBどうしようかなぁと思ってデータを眺めていたら、XMLデータベースを使いたくなってきた。
しかしながら、今動くのはJavaベースのしょぼいのばかり、 やはりC系言語でガリガリ書かれたものを使いたい。

あー、俺の中でJavaはクソ遅いんで、異論は認めない。

まぁ、そういうことで、選択しとして Sedna XML Database しかないのだ。
githubからソースを取得し、コンパイル、途中少しエラーが出たので、 BISION絡みのところと、Stringのインクルードガードを直し、ポインタの使い方を多分間違っている部分がコンパイラに怒られたので直し、 まぁそのくらいでコンパイルは通るようになった。

んで、データをエクセル使ってXMLに直し、バルクインサートし、XQueryで取り出してみた。
まぁ、よく動くよこれ、UTF-8にも対応してるんで、日本語も無問題だ。
今はXQueryを勉強し直してる。
Sedna XML Databaseは、C言語用インターフェースは用意されてるから、 golangからでも行けるだろうと思ってる。
ダメならマイクロサービスをC系の言語で書くわ
というか、なんで XML Database 無くなったんだろうか?
こんないい物が無くなるなんてまぢで勿体ない。