Forum: Other

Post: Stupid question

Stupid question
Ilia
Jul 1, 2015
I dont understand for what need VoltDB, its not similar DB2, MYSql , Microsoft SQL Server , Oracle. Yes? its in-memory database in real time yes? I mean i can have only 1 database? I cant create 10 databases with 100 talbes?
bballard
Jul 1, 2015
Hi Ilia,

There are architectural reasons why VoltDB is different from DB2, MySQL, SQLServer, and Oracle. Perhaps those are best in "The Reasons behind the VoltDB Architecture" here: http://voltdb.com/products/featuresbenefits/reasons-behind-voltdb-architecture

There isn't really an architectural reason why VoltDB supports only one database with one unnamed schema per cluster, rather than multiple named database instances or multiple named schemas. It just wasn't in the target set of features that were designed into VoltDB from the beginning, and while we have gotten some requests and questions about it, there hasn't been enough interest from customers or from the market to make it a high priority.

Regards,
Ben
Ilia
Jul 1, 2015
Thank you Ben, can you answer antoher question. How i can work with VoltDB with local machine? telnet or what? how i can work in terminal not at cluster and Apach. Can i do it?
bballard
Jul 1, 2015
Hi Ilia,

I'm not sure if I understand your question, could you rephrase it? If you're asking how can you download and run VoltDB, this 4-minute video shows how to do it: http://voltdb.com/resources/video/downloading-and-running-voltdb

Best regards,
Ben
Ilia
Jul 2, 2015
NO, no how i can work witth voltDB? only on cluster, or i can use any local machine for connect to terminal?
rmorgenstein
Jul 2, 2015
Hi Ilia, you can connect to VoltDB using sqlcmd (in the bin directory) or using the VoltDB Management Center on the <host>:8080 port. In addition, we support JDBC - and I know that some common tools, such as Squirrel SQL Client work just fine (after you load our client jar in to use as the driver).
Ilia
Jul 2, 2015
rmirgwnstein can i work with VoltDB use telnet for connect to VoltDB or something else?
pzhao
Jul 2, 2015
Ilia,

Unfortunately, you can not use telnet to connect to VoltDB cluster. The simplest way to connect to the database is sqlcmd. Alternatively, you can use our VoltDB Management Center to do the same.

Peter Zhao
Ilia
Jul 2, 2015
No, Peter i wanna connect to voltdb with any local machine in my network with Manager Center i can do this cuz its Apach. with sqlcmd i cant do this for windows
pzhao
Jul 2, 2015
Ilia,

To connect to a remote machine with sqlcmd, try this:
sqlcmd --servers=zeus
Alternatively, with VoltDB Management Center you can link to a remote machine as well:
http://<hostname>:8080

Peter Zhao
Ilia
Jul 2, 2015
have u sqlcmd for OS:Microsoft?
pzhao
Jul 2, 2015
Ilia,

VoltDB has no support for Windows. As such you can connect to your remote cluster via putty from windows.

With that said, I'd like to understand your environment, where is voltdb running, the machines and its' operating system involved in your test, and what you are trying to achieve? With this information, I can better guide you.

Peter Zhao
Ilia
Jul 2, 2015
VoltDB will be on cluster with Linux OS ofc, but i wanna work with her remote on Windows OS.
pzhao
Jul 2, 2015
Ilia,

Options I can think of are to install putty on your local windows machine and connect to Linux nodes for accessing to sqlcmd. Another route you can take is using our web interface, <host>:8080. Lastly, if possible, run a Virtual Machine with linux and do everything within the Virtual Machine.

Peter Zhao
Ilia
Jul 2, 2015
Hi Ilia, you can connect to VoltDB using sqlcmd (in the bin directory) or using the VoltDB Management Center on the <host>:8080 port. In addition, we support JDBC - and I know that some common tools, such as Squirrel SQL Client work just fine (after you load our client jar in to use as the driver).


Peter how about this?
pzhao
Jul 2, 2015
Ilia,

If you are referring to the Squirrel SQL client, you can using this for simple sql statements. For more advance sql statement executions and/or voltdb administration, your preferred method reach a linux machine with sqlcmd to reach your voltdb cluster.

Peter Zhao
Ilia
Jul 27, 2015
Question about Do and Don’t.
1.Don't return excessive amounts of data from stored procedures. Too large result sets clog the network and impact latency. VoltDB limits the procedure results to 50MB. Keep your results small to maximize throughput and minimize latency.
What its mean? Data from procedure cant be more then 50 MB?
Example: create procedure AA as select name where name=’Bob’ and this result cant be more then 50 MB?

Question about replica database. What replication is used synchrony or asynchrony.

The process of retrieving completed transactions from the master and applying them to partitions on the replica is initiated by the replica. When the replica initiates replication, it performs the following tasks:
• Connects to the master cluster, telling the master database to queue and PUSH a binary log of completed
transactions to the replica.
• Receives and ACKs the binary log once the transaction results are applied on the replica.
The actual replication process is performed in multiple parallel streams; each unique partition on the master
cluster sends a binary log of completed transactions to the matching partition on the replica cluster.

Binary logs contain not data, he contain changes from data.? What will be if master crushed when binary log sending?
84
Ilia
Jul 27, 2015
one more question
if i wanna have 2 replica can i configure deployment file with two connection source?
example
M-----R------R2
ip:R Ip:M IP:R its worked

if
M-----R------R2
ip:R Ip:M IP:R and IP:R
i cant configure this file, he write i cant have two connection or dr in one file.
bballard
Jul 28, 2015
Hi Ilia,

You can chain database replication, where the replica cluster is also a master to an additional replica cluster. For example:

Cluster 1 (Master)
start normally
deployment.xml:
<dr id="1" listen="true">

Cluster 2 (Replica)
start with "voltdb create --replica ..."
deployment.xml:
<dr id="2" listen="true">
<connection source="cluster_1_server" />
</dr>

Cluster 3 (Replica)
start with "voltdb create --replica ..."
deployment.xml:
<dr id="3" listen="true">
<connection source="cluster_2_server" />
</dr>

See Using VoltDB 11.2: http://docs.voltdb.com/UsingVoltDB/DbRepHowToStart.php

Regards,
Ben
Ilia
Jul 28, 2015
Ben answer me to previous question about replica and do and dont
Question about Do and Don’t.
1.Don't return excessive amounts of data from stored procedures. Too large result sets clog the network and impact latency. VoltDB limits the procedure results to 50MB. Keep your results small to maximize throughput and minimize latency.
What its mean? Data from procedure cant be more then 50 MB?
Example: create procedure AA as select name where name=’Bob’ and this result cant be more then 50 MB?

Question about replica database. What replication is used synchrony or asynchrony.

The process of retrieving completed transactions from the master and applying them to partitions on the replica is initiated by the replica. When the replica initiates replication, it performs the following tasks:
• Connects to the master cluster, telling the master database to queue and PUSH a binary log of completed
transactions to the replica.
• Receives and ACKs the binary log once the transaction results are applied on the replica.
The actual replication process is performed in multiple parallel streams; each unique partition on the master
cluster sends a binary log of completed transactions to the matching partition on the replica cluster.

Binary logs contain not data, he contain changes from data.? What will be if master crushed when binary log sending?
bballard
Jul 29, 2015
Hi Ilia,

There is a 50MB limit on the size of messages to and from VoltDB, and within the cluster, which limits the results of any query or procedure to 50MB. If you want to get the entire table, in order to populate another system, then there are other options such as using export to push data continuously to another system, or taking a snapshot in CSV format. If you simply need to retrieve > 50MB to an application, you would need to add some more criteria to the query and make multiple invocations to get the data in smaller result sets.

Database replication is asynchronous, so the replica will lag behind the master based on the distance and speed of the network. If the master cluster crashed, there can be some transactions committed on the master which were not yet fully transfered via binary logs to the replica. If you promote the replica cluster, you would most likely be proceeding without some of these most recent transactions applied. However, if you recover the master cluster, the replication would resume and those changes would then be applied on the replica.
Ilia
Jul 29, 2015
ty, ben.............
Ilia
Aug 1, 2015
Hello guys,
I have hostcount=3, sitesperhost=2 and kfactor=1
I assume that i can kill one random node and cluster should still work.
Node &#8470;0 is the master node.
if i kill only node1 or only node2 the cluster works.
if i kill only node 0 - cluster dies. tell me why is this happening?
85
pzhao
Aug 3, 2015
Ilia,

if i kill only node 0 - cluster dies. tell me why is this happening?

The cluster should not fail in a kfactor of 1 configuration. Please show us log/volt.log and deployment file.

Peter Zhao
Ilia
Aug 4, 2015
i cant repeat my experiment with 3 hostcount.
Now i have 2 hostcount
This screen watch deppyment file and voltdb create 0 and 1 nodes.
86
this is my schema experiment.
87
1st experiment was kill 1 node.
88
2nd kill only node 0.
89
and cluster crushed.
This log about experiment 2 when i kill node 0.
https://github.com/Volotov/voltdb/blob/dc2dfbfa2442be0112cc6638b3c611845402c631/volt.log
pzhao
Aug 4, 2015
Ilia,

Please take a look at this chapter, Avoiding Network Partitions, that explains what your experiencing, specifically the last 2 paragraphs explain the situation your running into. What you're experiencing is expected behavior.


Peter Zhao
Ilia
Aug 4, 2015
i read it, and undesrtand how its works.
2015-08-04 12:54:04,425 INFO [LeaderAppointer-Babysitters] TM: Partition detection triggered for 50/50 cluster failure. This survivor set is shutting down.
but
if i changed deployment file with this
<partition-detection enabled="false">
<snapshot prefix="netfault"/>
</partition-detection>
cluster not crushed?
pzhao
Aug 4, 2015
Ilia,

Based on the partial deployment you've shown, you've disabled partition detection. During network fault, VoltDB will not check for a network partition. This setting will allow VoltDB to continue running after a network fault as long as self-sustaining copy of the database is preserved. This allows the possibility of two separate copies of the database continuing to operate and accepting requests thinking they are the only viable copy.

Peter Zhao
Ilia
Aug 11, 2015
Hi guys.
i cant rejoin node. look at this:
deployment:
hostcount=2 sitesperhost=2 kfactor=1
console:
voltdb create -H 192.168.1.1:3021 -d deployment.xml node0
voltdb create -H 192.168.1.1:3021 -d deployment.xml --admin .................... node1
then i kill node 1
and i wanna rejoin this node1
voltdb rejoin -H 192.168.1.1:3021 -d deployment.xml --admin ....................

error:
Initializing the database and command logs. This may take a moment...
Server completed initialization.
FATAL: Site: 2:0 encountered an unexpected error and will die, taking this VoltDB node down.
FATAL: Fatal exception
java.lang.NullPointerException
at org.voltdb.iv2.RejoinProducer$1.runForRejoin(RejoinProducer.java:328)
at org.voltdb.iv2.Site.run(Site.java:580)
at java.lang.Thread.run(Thread.java:745)
VoltDB has encountered an unrecoverable error and is exiting.
The log may contain additional information.

log http://myfolder.ru/files/44066208
pzhao
Aug 11, 2015
Ilia,

Thanks for bringing this to our attention. This occurs when you have an empty schema and will be addressed in our upcoming release. Please create a table and rejoin functionality will operate as you'd expect.

Peter Zhao
Ilia
Aug 11, 2015
ty Peter i try it
Ilia
Aug 12, 2015
Hi, guys.
Question 1: why when I rejoin node, node id+1? If I have hostcount=2, my node id =0,1. When I kill node 1 and rejoin her why her id is 2?

voltdb@ubuntu:~$ voltdb rejoin -H 192.168.1.1:3021 -d deployment.xml --admin=2332 --client=4322 --http=8086 --internal=5021 --zookeeper=45356 --replication=6655
Initializing VoltDB...
Build: 5.4 voltdb-5.4-0-g4a2c380-local Enterprise Edition
Connecting to the VoltDB cluster leader /192.168.1.1:3021
WARN: Clock skew is 28 which is high. Ideally it should be sub-millisecond. Make sure NTP is running.
WARN: Clock skew is 28 which is high. Ideally it should be sub-millisecond. Make sure NTP is running.
Host id of this node is: 2
Initializing the database and command logs. This may take a moment...
ERROR: JMX service unable to bind to port 9090
Server completed initialization.
Node rejoin completed

Question 2: how I understand k-safety. Kfactor is how many copies of database we have.
Example: hostcount=8,sitesperhsot=4,kfactor=1. Result I have 2 copies of database with 16 partition.
Look at this screen:
91
On this screen if k factor=1 I have two copies database with 3 partition per each. When only 1 node die cluster alive.
If kfactor=2 I have 3 copies database with 2 partition per each. When 2 nodes die cluster alive. Right?

Go next.
How it works with add nodes?
Look at this screen:
92
I have cluster with 2 nodes. Kfactor=1 and sitesperhost=2.
I wanna add node 3. Why cluster wait one more node. Why he cant regroup database with 3 nodes and 2 copies database with 3 partition per each how on 1st screen?
When I add 4 node, join completed and I have 4 nodes with 2 copies database with 4 partition per each.
pzhao
Aug 12, 2015
Ilia,

Question 1: why when I rejoin node, node id+1? If I have hostcount=2, my node id =0,1. When I kill node 1 and rejoin her why her id is 2?

VoltDB keeps track of every instance that attempts to connect to the cluster with an internal logical id, which can be used to understand node/cluster failures. This does not affect usability.

How it works with add nodes?

There's a chapter on availability which will explain how Ksafety works and adding nodes with elastic scaling.

I wanna add node 3. Why cluster wait one more node. Why he cant regroup database with 3 nodes and 2 copies database with 3 partition per each how on 1st screen?

In the documentation linked above, it states "You must add a sufficient number of nodes to create an integral K-safe unit. That is, K+1 nodes.". So in your case, you'll need to add 2 nodes.

Peter Zhao
Ilia
Mar 31, 2016
Hi every one!

Tell me please, VoltDB Management Center is completely excluded from the Enterprise Version and will no longer be developed? Is there another alternative VoltDB Management Center?

Important
The VoltDB Enterprise Manager is deprecated. It is supported for existing customers but is not recommended for new deployments and will be removed in a future release. The VoltDB Management Center, which has improved and extended management and monitoring capabilities built directly into the VoltDB database server, is the recommended replacement for the Enterprise Manager. See the Administrator's Guide for more information on the VoltDB Management Center.

https://docs.voltdb.com/ReleaseNotes/

Thank you in advance
jpiekos
Mar 31, 2016
Hi Ilia,

The VEM (VoltDB Enterprise Manager) tool was deprecated in v5.0 and removed in v6.0. In v5.0 VEM was replaced with VMC, the VoltDB Management Center. It's here to stay, and is part of both the Community and Enterprise kits.

John
Ilia
Mar 31, 2016
Hi John

One more question,
It turns VoltDB Management Center is available as a single product? And installs separate package?

Thank you in advance
jpiekos
Mar 31, 2016
The VoltDB Management Center is part of the VoltDB kit. Essentially it is a web application hosted by each node of the VoltDB cluster. You can point your browser to any node and manage/monitor the database.

John