不同的OPA应用可以共享数据库吗?

rus*_*eed 3 opa

我只是在调查OPA,试图从传统的LAMP背景中实现跨越,所以这是我的第一个新手问题:

我可以拥有两个共享相同数据库的OPA应用程序,比如一个写入数据库而另一个从中读取数据库?

ako*_*ski 5

是的,这当然是可能的.一个简单但完整的例子:

[db.opa]

database ./counter
db /counter : int
Counter = {{
  read() = /counter
  inc() = /counter <- read() + 1
}}
Run Code Online (Sandbox Code Playgroud)

[db_read.opa]

server = one_page_server("Counter app", -> <>Counter value: {Counter.read()}</>)
Run Code Online (Sandbox Code Playgroud)

[db_write.opa]

_ = Scheduler.timer(1000, -> Counter.inc())
Run Code Online (Sandbox Code Playgroud)

编译:

 opa db_read.opa db.opa -o db_read.exe
 opa db_write.opa db.opa -o db_write.exe
Run Code Online (Sandbox Code Playgroud)

counter在端口上运行数据库服务器5001:

 opa-db-server -b 127.0.0.1:5001 --db-local counter
Run Code Online (Sandbox Code Playgroud)

运行应用程序,连接到此数据库:

 ./db_read.exe --db-remote 127.0.0.1:5001
 ./db_write.exe --db-remote 127.0.0.1:5001
Run Code Online (Sandbox Code Playgroud)

db_write应用程序每秒更新一次计数器.您可以db_read通过访问localhost:8080(并刷新页面)来查看应用程序.

希望如果我出错了,Opa-DB专家会纠正我.