sensorlog: syncbase: rename "table" to "collection"

Second half of part 1 of transition plan.

MultiPart: 3/3

Change-Id: Iba15c9fd8951102215187a43710434dafdc1b353
diff --git a/go/src/v.io/x/sensorlog/README.md b/go/src/v.io/x/sensorlog/README.md
index 670c017..536f2f5 100644
--- a/go/src/v.io/x/sensorlog/README.md
+++ b/go/src/v.io/x/sensorlog/README.md
@@ -29,10 +29,10 @@
 
     $ V23_CREDENTIALS=<creds> SL_DEVID=dev1 ./scripts/run_measured.sh
 
-By default, it starts a local mounttable at port 8707 (override using
+By default, it starts a local mount table at port 8707 (override using
 `$SL_IPADDR_PORT`), mounts it at
 `/ns.dev.v.io:8101/users/<email-from-blessing>/sl/measured/<devid>`,
-starts a Syncbase instance mounted in the local mounttable at
+starts a Syncbase instance mounted in the local mount table at
 `sl/measured/<devid>`, and a measuring daemon against the Syncbase instance.
 
 ### Using the client
@@ -41,7 +41,7 @@
 
     $ V23_CREDENTIALS=<creds> ./scripts/run_cli_syncbased.sh
 
-By default, it starts a local mounttable at port 8202 (override using
+By default, it starts a local mount table at port 8202 (override using
 `$SL_IPADDR_PORT`) and starts a Syncbase instance mounted in it at
 `sl/client/main` (override using `$SL_DEVID`).
 
diff --git a/go/src/v.io/x/sensorlog/internal/client/device.go b/go/src/v.io/x/sensorlog/internal/client/device.go
index 040c0be..e3838bd 100644
--- a/go/src/v.io/x/sensorlog/internal/client/device.go
+++ b/go/src/v.io/x/sensorlog/internal/client/device.go
@@ -36,7 +36,7 @@
 		SgPublishSb: sgPublishSb,
 	}
 	devSgName := config.SyncgroupName(sgPublishSb, devKey.Key())
-	devRow := db.Table(devKey.Table()).Row(devKey.Key())
+	devRow := db.Collection(devKey.Collection()).Row(devKey.Key())
 
 	if exists, err := devRow.Exists(ctx); err != nil {
 		return nil, err
diff --git a/go/src/v.io/x/sensorlog/internal/client/device_v23_test.go b/go/src/v.io/x/sensorlog/internal/client/device_v23_test.go
index ce7d5f3..8c2defc 100644
--- a/go/src/v.io/x/sensorlog/internal/client/device_v23_test.go
+++ b/go/src/v.io/x/sensorlog/internal/client/device_v23_test.go
@@ -34,9 +34,9 @@
 	v23test.SkipUnlessRunningIntegrationTests(t)
 	sh := v23test.NewShell(t, nil)
 	defer sh.Cleanup()
-	// Start a 'global' mounttable.
+	// Start a 'global' mount table.
 	globalMT, globalMTShutdown := startAdditionalMT(sh, "--v23.tcp.address=127.0.0.1:0")
-	// Mount the local mounttable in the global one.
+	// Mount the local mount table in the global one.
 	localMT := naming.Join(globalMT, "localmt")
 	sh.StartRootMountTableWithOpts(mounttablelib.Opts{MountName: localMT})
 
@@ -52,7 +52,7 @@
 
 	time.Sleep(1 * time.Second)
 
-	// Initialize measuring device syncgroup using the global mounttable alias
+	// Initialize measuring device syncgroup using the global mount table alias
 	// of measured Syncbase for publishing.
 	devId := "measured1"
 	publishSb := naming.Join(localMT, measuredSb)
@@ -68,7 +68,7 @@
 	// Allow time for syncgroup metadata sync.
 	time.Sleep(3 * time.Second)
 
-	// After syncgroup has been joined, sync can use local mounttable. Kill the
+	// After syncgroup has been joined, sync can use local mount table. Kill the
 	// global one.
 	globalMTShutdown(os.Interrupt)
 
@@ -112,7 +112,7 @@
 }
 
 func initSyncgroup(ctx *context.T, sbService, devId, admin, publishSb, sgMT string) error {
-	db, err := sbutil.CreateOrOpenDB(ctx, sbService, sbmodel.MeasuredTables)
+	db, err := sbutil.CreateOrOpenDB(ctx, sbService, sbmodel.MeasuredCollections)
 	if err != nil {
 		return fmt.Errorf("failed initializing measured database: %v", err)
 	}
@@ -129,7 +129,7 @@
 }
 
 func watchForStreams(ctx *context.T, sbService, devId string) (stop func() (gotStreams []string, err error)) {
-	db, err := sbutil.CreateOrOpenDB(ctx, sbService, sbmodel.MeasuredTables)
+	db, err := sbutil.CreateOrOpenDB(ctx, sbService, sbmodel.MeasuredCollections)
 	if err != nil {
 		return func() ([]string, error) {
 			return nil, fmt.Errorf("failed opening measured database: %v", err)
diff --git a/go/src/v.io/x/sensorlog/internal/client/list.go b/go/src/v.io/x/sensorlog/internal/client/list.go
index 23339e3..795480b 100644
--- a/go/src/v.io/x/sensorlog/internal/client/list.go
+++ b/go/src/v.io/x/sensorlog/internal/client/list.go
@@ -24,7 +24,7 @@
 // in chronological order, calling listCb for each.
 // TODO(ivanpi): Allow specifying time interval.
 func ListStreamData(ctx *context.T, db syncbase.Database, streamKey *sbmodel.KStreamDef, listCb ListCallback) error {
-	tableName := sbmodel.KDataPoint{}.Table()
+	collectionName := sbmodel.KDataPoint{}.Collection()
 	dataPrefix := keyutil.Join(streamKey.DevId, streamKey.StreamId, "")
 
 	bdb, err := db.BeginBatch(ctx, wire.BatchOptions{ReadOnly: true})
@@ -33,14 +33,14 @@
 	}
 	defer bdb.Abort(ctx)
 
-	streamRow := bdb.Table(streamKey.Table()).Row(streamKey.Key())
+	streamRow := bdb.Collection(streamKey.Collection()).Row(streamKey.Key())
 	if exists, err := streamRow.Exists(ctx); err != nil {
 		return err
 	} else if !exists {
 		return verror.New(verror.ErrNoExist, ctx, "Stream '"+streamKey.Key()+"' does not exist")
 	}
 
-	sstr := bdb.Table(tableName).Scan(ctx, syncbase.Prefix(dataPrefix))
+	sstr := bdb.Collection(collectionName).Scan(ctx, syncbase.Prefix(dataPrefix))
 	defer sstr.Cancel()
 
 	for sstr.Advance() {
@@ -64,11 +64,11 @@
 // points until ctx is cancelled.
 // TODO(ivanpi): Allow specifying time interval.
 func FollowStreamData(ctx *context.T, db syncbase.Database, streamKey *sbmodel.KStreamDef, listCb ListCallback) error {
-	tableName := sbmodel.KDataPoint{}.Table()
+	collectionName := sbmodel.KDataPoint{}.Collection()
 	dataPrefix := keyutil.Join(streamKey.DevId, streamKey.StreamId, "")
 
 	// Watch for DataPoints, existing followed by new.
-	ws, err := db.Watch(ctx, tableName, dataPrefix, nil)
+	ws, err := db.Watch(ctx, collectionName, dataPrefix, nil)
 	if err != nil {
 		return err
 	}
diff --git a/go/src/v.io/x/sensorlog/internal/client/measured_v23_test.go b/go/src/v.io/x/sensorlog/internal/client/measured_v23_test.go
index 1616768..d29b431 100644
--- a/go/src/v.io/x/sensorlog/internal/client/measured_v23_test.go
+++ b/go/src/v.io/x/sensorlog/internal/client/measured_v23_test.go
@@ -99,7 +99,7 @@
 }
 
 func listStreamData(ctx *context.T, sbService, devId, streamId string, expectVal float64) error {
-	db, err := sbutil.CreateOrOpenDB(ctx, sbService, sbmodel.MasterTables)
+	db, err := sbutil.CreateOrOpenDB(ctx, sbService, sbmodel.MasterCollections)
 	if err != nil {
 		return fmt.Errorf("failed opening master database: %v", err)
 	}
diff --git a/go/src/v.io/x/sensorlog/internal/client/stream.go b/go/src/v.io/x/sensorlog/internal/client/stream.go
index e4ebc4a..237ad00 100644
--- a/go/src/v.io/x/sensorlog/internal/client/stream.go
+++ b/go/src/v.io/x/sensorlog/internal/client/stream.go
@@ -52,8 +52,8 @@
 	}
 
 	if err := syncbase.RunInBatch(ctx, db, wire.BatchOptions{}, func(db syncbase.BatchDatabase) error {
-		devRow := db.Table(devKey.Table()).Row(devKey.Key())
-		stmRow := db.Table(stmKey.Table()).Row(stmKey.Key())
+		devRow := db.Collection(devKey.Collection()).Row(devKey.Key())
+		stmRow := db.Collection(stmKey.Collection()).Row(stmKey.Key())
 
 		if exists, err := devRow.Exists(ctx); err != nil {
 			return err
diff --git a/go/src/v.io/x/sensorlog/internal/client/testutil/testutil.go b/go/src/v.io/x/sensorlog/internal/client/testutil/testutil.go
index de36070..3d9c32d 100644
--- a/go/src/v.io/x/sensorlog/internal/client/testutil/testutil.go
+++ b/go/src/v.io/x/sensorlog/internal/client/testutil/testutil.go
@@ -17,7 +17,7 @@
 )
 
 func AddTestDevice(ctx *context.T, sbService, devId, publishSb string) error {
-	db, err := sbutil.CreateOrOpenDB(ctx, sbService, sbmodel.MasterTables)
+	db, err := sbutil.CreateOrOpenDB(ctx, sbService, sbmodel.MasterCollections)
 	if err != nil {
 		return fmt.Errorf("failed opening master database: %v", err)
 	}
@@ -33,7 +33,7 @@
 }
 
 func CreateTestStream(ctx *context.T, sbService, devId, streamId, script string, interval time.Duration) error {
-	db, err := sbutil.CreateOrOpenDB(ctx, sbService, sbmodel.MasterTables)
+	db, err := sbutil.CreateOrOpenDB(ctx, sbService, sbmodel.MasterCollections)
 	if err != nil {
 		return fmt.Errorf("failed opening master database: %v", err)
 	}
diff --git a/go/src/v.io/x/sensorlog/internal/measure/syncgroup.go b/go/src/v.io/x/sensorlog/internal/measure/syncgroup.go
index 930ad50..4308086 100644
--- a/go/src/v.io/x/sensorlog/internal/measure/syncgroup.go
+++ b/go/src/v.io/x/sensorlog/internal/measure/syncgroup.go
@@ -51,13 +51,13 @@
 	sbutil.AddPermsForPattern(&sgAcl, admin, access.Read, access.Admin)
 
 	// Maps all syncgroup prefixes to ACLs.
-	prefixSpec := make(map[wire.TableRow]access.Permissions)
+	prefixSpec := make(map[wire.CollectionRow]access.Permissions)
 
 	// StreamDef : <devId>
 	// Admin client has full permissions, measured drops to readonly.
-	prefixStreamDef := wire.TableRow{
-		TableName: sbmodel.KStreamDef{}.Table(),
-		Row:       devId,
+	prefixStreamDef := wire.CollectionRow{
+		CollectionName: sbmodel.KStreamDef{}.Collection(),
+		Row:            devId,
 	}
 	aclStreamDef := access.Permissions{}
 	sbutil.AddPermsForPrincipal(&aclStreamDef, v23.GetPrincipal(ctx), access.Resolve, access.Read)
@@ -66,20 +66,20 @@
 
 	// DataPoint : <devId>
 	// Admin client has full permissions, measured drops to read/write.
-	prefixDataPoint := wire.TableRow{
-		TableName: sbmodel.KDataPoint{}.Table(),
-		Row:       devId,
+	prefixDataPoint := wire.CollectionRow{
+		CollectionName: sbmodel.KDataPoint{}.Collection(),
+		Row:            devId,
 	}
 	aclDataPoint := access.Permissions{}
 	sbutil.AddPermsForPrincipal(&aclDataPoint, v23.GetPrincipal(ctx), access.Resolve, access.Read, access.Write)
 	sbutil.AddPermsForPattern(&aclDataPoint, admin, access.Resolve, access.Read, access.Write, access.Admin)
 	prefixSpec[prefixDataPoint] = aclDataPoint
 
-	var prefixes []wire.TableRow
+	var prefixes []wire.CollectionRow
 	// Apply prefix ACLs to all syncgroup prefixes.
 	for prefix, prefixAcl := range prefixSpec {
 		// Ignore ErrNoAccess, assume we already dropped permissions.
-		err := db.Table(prefix.TableName).SetPrefixPermissions(ctx, syncbase.Prefix(prefix.Row), prefixAcl)
+		err := db.Collection(prefix.CollectionName).SetPrefixPermissions(ctx, syncbase.Prefix(prefix.Row), prefixAcl)
 		if err != nil && verror.ErrorID(err) != verror.ErrNoAccess.ID {
 			return err
 		}
diff --git a/go/src/v.io/x/sensorlog/internal/measure/syncgroup_test.go b/go/src/v.io/x/sensorlog/internal/measure/syncgroup_test.go
index 1522c73..a54a667 100644
--- a/go/src/v.io/x/sensorlog/internal/measure/syncgroup_test.go
+++ b/go/src/v.io/x/sensorlog/internal/measure/syncgroup_test.go
@@ -23,7 +23,7 @@
 	defer cleanup()
 
 	// Open app/db (create both) as measured.
-	db, err := sbutil.CreateOrOpenDB(ctxMeasured, sbName, sbmodel.MeasuredTables)
+	db, err := sbutil.CreateOrOpenDB(ctxMeasured, sbName, sbmodel.MeasuredCollections)
 	if err != nil {
 		t.Fatalf("CreateOrOpenDB should have succeeded, got error: %v", err)
 	}
@@ -49,12 +49,12 @@
 		t.Errorf("InitSyncgroup should be idempotent, retry failed: %v", err)
 	}
 
-	// measured should have dropped privileges on <StreamDefTable>/<devId>.
+	// measured should have dropped privileges on <StreamDefCollection>/<devId>.
 	expectPerms := access.Permissions{}.
 		Add(security.BlessingPattern("root:one"), string(access.Resolve), string(access.Read)).
 		Add(security.BlessingPattern("root:two"), string(access.Resolve), string(access.Read), string(access.Write), string(access.Admin))
-	sgDataTable := db.Table(sbmodel.KStreamDef{}.Table())
-	if gotPerms, err := sgDataTable.GetPrefixPermissions(ctxMeasured, devId); err != nil {
+	sgDataCollection := db.Collection(sbmodel.KStreamDef{}.Collection())
+	if gotPerms, err := sgDataCollection.GetPrefixPermissions(ctxMeasured, devId); err != nil {
 		t.Errorf("GetPrefixPermissions failed: %v", err)
 	} else if got, want := gotPerms[0].Perms.Normalize(), expectPerms.Normalize(); !reflect.DeepEqual(got, want) {
 		t.Errorf("Unexpected permissions on streamdef/<devId>: got %v, want %v", got, want)
diff --git a/go/src/v.io/x/sensorlog/internal/measure/watcher.go b/go/src/v.io/x/sensorlog/internal/measure/watcher.go
index 08e8415..c9260a6 100644
--- a/go/src/v.io/x/sensorlog/internal/measure/watcher.go
+++ b/go/src/v.io/x/sensorlog/internal/measure/watcher.go
@@ -27,11 +27,11 @@
 // WatchForStreams is synchronous and runs until the context is cancelled or
 // an error is encountered.
 func WatchForStreams(ctx *context.T, db syncbase.Database, devId string, register RegisterWorker) error {
-	tableName := sbmodel.KStreamDef{}.Table()
+	collectionName := sbmodel.KStreamDef{}.Collection()
 	watchPrefix := keyutil.Join(devId, "")
 
 	// Watch for StreamDef changes and register samplers as needed.
-	ws, err := db.Watch(ctx, tableName, watchPrefix, nil)
+	ws, err := db.Watch(ctx, collectionName, watchPrefix, nil)
 	if err != nil {
 		return err
 	}
diff --git a/go/src/v.io/x/sensorlog/internal/measure/watcher_test.go b/go/src/v.io/x/sensorlog/internal/measure/watcher_test.go
index 973381f..9bba516 100644
--- a/go/src/v.io/x/sensorlog/internal/measure/watcher_test.go
+++ b/go/src/v.io/x/sensorlog/internal/measure/watcher_test.go
@@ -23,7 +23,7 @@
 	"v.io/x/sensorlog/internal/util"
 )
 
-var watchTables = []sbmodel.TableSpec{
+var watchCollections = []sbmodel.CollectionSpec{
 	{Prototype: &sbmodel.KStreamDef{}},
 }
 
@@ -32,7 +32,7 @@
 	defer cleanup()
 
 	// Open app/db (create both) as measured. Keep write permission on StreamDef.
-	db, err := sbutil.CreateOrOpenDB(ctxMeasured, sbName, watchTables)
+	db, err := sbutil.CreateOrOpenDB(ctxMeasured, sbName, watchCollections)
 	if err != nil {
 		t.Fatalf("CreateOrOpenDB should have succeeded, got error: %v", err)
 	}
@@ -81,7 +81,7 @@
 	defer cleanup()
 
 	// Open app/db (create both) as measured. Keep write permission on StreamDef.
-	db, err := sbutil.CreateOrOpenDB(ctxMeasured, sbName, watchTables)
+	db, err := sbutil.CreateOrOpenDB(ctxMeasured, sbName, watchCollections)
 	if err != nil {
 		t.Fatalf("CreateOrOpenDB should have succeeded, got error: %v", err)
 	}
@@ -126,7 +126,7 @@
 func putStreamDef(t *testing.T, ctx *context.T, db syncbase.DatabaseHandle, devId, desc string) {
 	key := sbmodel.KStreamDef{DevId: devId, StreamId: keyutil.UUID()}
 	val := sbmodel.VStreamDef{Desc: desc}
-	if err := db.Table(key.Table()).Put(ctx, key.Key(), &val); err != nil {
+	if err := db.Collection(key.Collection()).Put(ctx, key.Key(), &val); err != nil {
 		t.Fatalf(tu.FormatLogLine(2, "failed to put StreamDef %s (%s): %v", key.Key(), val.Desc, err))
 	}
 }
diff --git a/go/src/v.io/x/sensorlog/internal/sbmodel/sbmodel.vdl.go b/go/src/v.io/x/sensorlog/internal/sbmodel/sbmodel.vdl.go
index bff9f2a..ff0f41a 100644
--- a/go/src/v.io/x/sensorlog/internal/sbmodel/sbmodel.vdl.go
+++ b/go/src/v.io/x/sensorlog/internal/sbmodel/sbmodel.vdl.go
@@ -9,8 +9,8 @@
 //
 // Every type <T> stored in Syncbase is defined as a pair of types, K<T> and
 // V<T>, representing data stored in the key and value, respectively, in a
-// single table. K<T> types satisfy the PersistentDataKey interface, supporting
-// conversion to and from the row key.
+// single collection. K<T> types satisfy the PersistentDataKey interface,
+// supporting conversion to and from the row key.
 package sbmodel
 
 import (
diff --git a/go/src/v.io/x/sensorlog/internal/sbmodel/types.go b/go/src/v.io/x/sensorlog/internal/sbmodel/types.go
index 73aceac..7d5007d 100644
--- a/go/src/v.io/x/sensorlog/internal/sbmodel/types.go
+++ b/go/src/v.io/x/sensorlog/internal/sbmodel/types.go
@@ -13,8 +13,8 @@
 // PersistentDataKey is a type encapsulating data from the row key of a
 // top-level value type persisted to Syncbase.
 type PersistentDataKey interface {
-	// Table returns the name of the Syncbase table for the data type.
-	Table() string
+	// Collection returns the name of the Syncbase collection for the data type.
+	Collection() string
 	// Key returns the row key for the value.
 	Key() string
 	// Parse parses the row key for the value into self. Returns an error if key
@@ -23,8 +23,8 @@
 }
 
 // devicecfg : <DevId>
-func (_ KDeviceCfg) Table() string { return "devicecfg" }
-func (k *KDeviceCfg) Key() string  { return keyutil.Join(k.DevId) }
+func (_ KDeviceCfg) Collection() string { return "devicecfg" }
+func (k *KDeviceCfg) Key() string       { return keyutil.Join(k.DevId) }
 func (k *KDeviceCfg) Parse(key string) error {
 	parts, err := keyutil.Split(key, 1)
 	if err != nil {
@@ -35,8 +35,8 @@
 }
 
 // streamdef : <DevId>/<StreamId>
-func (_ KStreamDef) Table() string { return "streamdef" }
-func (k *KStreamDef) Key() string  { return keyutil.Join(k.DevId, k.StreamId) }
+func (_ KStreamDef) Collection() string { return "streamdef" }
+func (k *KStreamDef) Key() string       { return keyutil.Join(k.DevId, k.StreamId) }
 func (k *KStreamDef) Parse(key string) error {
 	parts, err := keyutil.Split(key, 2)
 	if err != nil {
@@ -47,7 +47,7 @@
 }
 
 // sdata : <DevId>/<StreamId>/<Timestamp>
-func (k KDataPoint) Table() string {
+func (k KDataPoint) Collection() string {
 	return "sdata"
 }
 func (k *KDataPoint) Key() string {
@@ -66,22 +66,22 @@
 	return nil
 }
 
-// TableSpec defines a Syncbase table, encapsulating a key prototype and
+// CollectionSpec defines a Syncbase collection, encapsulating a key prototype and
 // permissions.
-type TableSpec struct {
+type CollectionSpec struct {
 	Prototype PersistentDataKey
 	ReadOnly  bool
 }
 
 // All top-level types persisted to master device Syncbase.
-var MasterTables = []TableSpec{
+var MasterCollections = []CollectionSpec{
 	{Prototype: &KDeviceCfg{}},
 	{Prototype: &KStreamDef{}},
 	{Prototype: &KDataPoint{}},
 }
 
 // All top-level types persisted to measured Syncbase.
-var MeasuredTables = []TableSpec{
+var MeasuredCollections = []CollectionSpec{
 	{Prototype: &KStreamDef{}, ReadOnly: true},
 	{Prototype: &KDataPoint{}},
 }
diff --git a/go/src/v.io/x/sensorlog/internal/sbmodel/types.vdl b/go/src/v.io/x/sensorlog/internal/sbmodel/types.vdl
index 5f729bf..cf59d04 100644
--- a/go/src/v.io/x/sensorlog/internal/sbmodel/types.vdl
+++ b/go/src/v.io/x/sensorlog/internal/sbmodel/types.vdl
@@ -6,8 +6,8 @@
 //
 // Every type <T> stored in Syncbase is defined as a pair of types, K<T> and
 // V<T>, representing data stored in the key and value, respectively, in a
-// single table. K<T> types satisfy the PersistentDataKey interface, supporting
-// conversion to and from the row key.
+// single collection. K<T> types satisfy the PersistentDataKey interface,
+// supporting conversion to and from the row key.
 package sbmodel
 
 import (
diff --git a/go/src/v.io/x/sensorlog/internal/sbmodel/types_test.go b/go/src/v.io/x/sensorlog/internal/sbmodel/types_test.go
index c82ced7..ff891c3 100644
--- a/go/src/v.io/x/sensorlog/internal/sbmodel/types_test.go
+++ b/go/src/v.io/x/sensorlog/internal/sbmodel/types_test.go
@@ -31,8 +31,8 @@
 	if got, want := keyPrototype, kt.keyParsed; !reflect.DeepEqual(got, want) {
 		t.Errorf("incorrect key parse: got %v, want %v", got, want)
 	}
-	if got, want := kt.keyParsed.Table(), keyPrototype.Table(); got != want {
-		t.Errorf("incorrect parsed key table: got %v, want %v", got, want)
+	if got, want := kt.keyParsed.Collection(), keyPrototype.Collection(); got != want {
+		t.Errorf("incorrect parsed key collection: got %v, want %v", got, want)
 	}
 	if got, want := kt.keyParsed.Key(), kt.keyStr; got != want {
 		t.Errorf("incorrect key build: got %s, want %s", got, want)
diff --git a/go/src/v.io/x/sensorlog/internal/sbutil/syncbase.go b/go/src/v.io/x/sensorlog/internal/sbutil/syncbase.go
index 0f8fd43..d3d843f 100644
--- a/go/src/v.io/x/sensorlog/internal/sbutil/syncbase.go
+++ b/go/src/v.io/x/sensorlog/internal/sbutil/syncbase.go
@@ -17,8 +17,8 @@
 )
 
 // CreateOrOpenDB opens the Sensor Log database hosted on specified Syncbase
-// instance, creating it if missing, initializing specified tables.
-func CreateOrOpenDB(ctx *context.T, sbService string, tables []sbmodel.TableSpec) (syncbase.Database, error) {
+// instance, creating it if missing, initializing specified collections.
+func CreateOrOpenDB(ctx *context.T, sbService string, collections []sbmodel.CollectionSpec) (syncbase.Database, error) {
 	aclFull := access.Permissions{}
 	// Allow everyone to resolve to allow joining syncgroups.
 	AddPermsForPattern(&aclFull, string(security.AllPrincipals), access.Resolve)
@@ -43,9 +43,9 @@
 		return nil, err
 	}
 
-	// TODO(ivanpi): Add table schemas when available.
-	for _, ts := range tables {
-		tb := db.Table(ts.Prototype.Table())
+	// TODO(ivanpi): Add schemas when available.
+	for _, ts := range collections {
+		tb := db.Collection(ts.Prototype.Collection())
 		acl := aclReadOnly
 		if !ts.ReadOnly {
 			acl = aclFull
@@ -58,8 +58,8 @@
 	return db, nil
 }
 
-// creatable is satisfied by Syncbase hierarchy layers (app, db, table) that
-// can be created and tested for existence.
+// creatable is satisfied by Syncbase hierarchy layers (app, db, collection)
+// that can be created and tested for existence.
 type creatable interface {
 	Create(ctx *context.T, acl access.Permissions) error
 	Exists(ctx *context.T) (bool, error)
diff --git a/go/src/v.io/x/sensorlog/internal/sbutil/syncbase_test.go b/go/src/v.io/x/sensorlog/internal/sbutil/syncbase_test.go
index eb41163..a31fa52 100644
--- a/go/src/v.io/x/sensorlog/internal/sbutil/syncbase_test.go
+++ b/go/src/v.io/x/sensorlog/internal/sbutil/syncbase_test.go
@@ -23,16 +23,16 @@
 	ctxGuest := sbtu.NewCtx(ctxOwner, rootPrincipal, "two")
 
 	// Try to open app/db (create both) as guest, fail with ErrNoAccess.
-	if _, err := sbutil.CreateOrOpenDB(ctxGuest, sbName, sbmodel.MasterTables); verror.ErrorID(err) != verror.ErrNoAccess.ID {
+	if _, err := sbutil.CreateOrOpenDB(ctxGuest, sbName, sbmodel.MasterCollections); verror.ErrorID(err) != verror.ErrNoAccess.ID {
 		t.Errorf("CreateOrOpenDB should have failed with ErrNoAccess, got error: %v", err)
 	}
 	// Open app/db (create both) as owner.
-	dbOwner, err := sbutil.CreateOrOpenDB(ctxOwner, sbName, sbmodel.MasterTables)
+	dbOwner, err := sbutil.CreateOrOpenDB(ctxOwner, sbName, sbmodel.MasterCollections)
 	if err != nil {
 		t.Fatalf("CreateOrOpenDB should have succeeded, got error: %v", err)
 	}
 	// Open existing app/db as guest.
-	if _, err := sbutil.CreateOrOpenDB(ctxGuest, sbName, sbmodel.MasterTables); err != nil {
+	if _, err := sbutil.CreateOrOpenDB(ctxGuest, sbName, sbmodel.MasterCollections); err != nil {
 		t.Errorf("CreateOrOpenDB should have succeeded, got error: %v", err)
 	}
 	// Destroy db (but not app) to simulate interrupted creation.
@@ -40,16 +40,16 @@
 		t.Errorf("dbOwner.Destroy should have succeeded, got error: %v", err)
 	}
 	// Try to open app/db (create db) as guest, fail with ErrNoAccess.
-	if _, err := sbutil.CreateOrOpenDB(ctxGuest, sbName, sbmodel.MasterTables); verror.ErrorID(err) != verror.ErrNoAccess.ID {
+	if _, err := sbutil.CreateOrOpenDB(ctxGuest, sbName, sbmodel.MasterCollections); verror.ErrorID(err) != verror.ErrNoAccess.ID {
 		t.Errorf("CreateOrOpenDB should have failed with ErrNoAccess, got error: %v", err)
 	}
 	// Open app/db (recreate db) as owner.
-	dbOwner, err = sbutil.CreateOrOpenDB(ctxOwner, sbName, sbmodel.MasterTables)
+	dbOwner, err = sbutil.CreateOrOpenDB(ctxOwner, sbName, sbmodel.MasterCollections)
 	if err != nil {
 		t.Fatalf("CreateOrOpenDB should have succeeded, got error: %v", err)
 	}
 	// Open recreated app/db as guest.
-	dbGuest, err := sbutil.CreateOrOpenDB(ctxGuest, sbName, sbmodel.MasterTables)
+	dbGuest, err := sbutil.CreateOrOpenDB(ctxGuest, sbName, sbmodel.MasterCollections)
 	if err != nil {
 		t.Errorf("CreateOrOpenDB should have succeeded, got error: %v", err)
 	}
@@ -62,21 +62,21 @@
 	} else if got, want := perms.Normalize(), expectPerms.Normalize(); !reflect.DeepEqual(got, want) {
 		t.Errorf("Unexpected database permissions: got %v, want %v", got, want)
 	}
-	// Check that all tables exist.
-	for _, ts := range sbmodel.MasterTables {
-		tb := dbGuest.Table(ts.Prototype.Table())
+	// Check that all collections exist.
+	for _, ts := range sbmodel.MasterCollections {
+		tb := dbGuest.Collection(ts.Prototype.Collection())
 		if exists, err := tb.Exists(ctxGuest); err != nil || !exists {
-			t.Errorf("Expected table %s to exist, got: %v (error: %v)", tb.Name(), exists, err)
+			t.Errorf("Expected collection %s to exist, got: %v (error: %v)", tb.Name(), exists, err)
 		}
 	}
 }
 
-func TestTablePermissions(t *testing.T) {
+func TestCollectionPermissions(t *testing.T) {
 	_, ctxOwner, sbName, _, cleanup := sbtu.SetupOrDieCustom("one", "one:sb", nil)
 	defer cleanup()
 
 	// Open app/db (create both) as owner.
-	dbOwner, err := sbutil.CreateOrOpenDB(ctxOwner, sbName, sbmodel.MeasuredTables)
+	dbOwner, err := sbutil.CreateOrOpenDB(ctxOwner, sbName, sbmodel.MeasuredCollections)
 	if err != nil {
 		t.Fatalf("CreateOrOpenDB should have succeeded, got error: %v", err)
 	}
@@ -88,11 +88,11 @@
 		Add(security.AllPrincipals, string(access.Resolve)).
 		Add(security.BlessingPattern("root:one"), string(access.Admin), string(access.Read))
 
-	// Check that all tables have correct permissions (full or readonly).
-	for _, ts := range sbmodel.MeasuredTables {
-		tb := dbOwner.Table(ts.Prototype.Table())
+	// Check that all collections have correct permissions (full or readonly).
+	for _, ts := range sbmodel.MeasuredCollections {
+		tb := dbOwner.Collection(ts.Prototype.Collection())
 		if exists, err := tb.Exists(ctxOwner); err != nil || !exists {
-			t.Errorf("Expected table %s to exist, got: %v (error: %v)", tb.Name(), exists, err)
+			t.Errorf("Expected collection %s to exist, got: %v (error: %v)", tb.Name(), exists, err)
 		}
 		want := expectPermsFull
 		if ts.ReadOnly {
@@ -101,7 +101,7 @@
 		if got, err := tb.GetPermissions(ctxOwner); err != nil {
 			t.Errorf("GetPermissions should have succeeded, got error: %v", err)
 		} else if got, want = got.Normalize(), want.Normalize(); !reflect.DeepEqual(got, want) {
-			t.Errorf("Unexpected table %s permissions: got %v, want %v", tb.Name(), got, want)
+			t.Errorf("Unexpected collection %s permissions: got %v, want %v", tb.Name(), got, want)
 		}
 	}
 }
diff --git a/go/src/v.io/x/sensorlog/measured/measured.go b/go/src/v.io/x/sensorlog/measured/measured.go
index f44eff4..c0c0b45 100644
--- a/go/src/v.io/x/sensorlog/measured/measured.go
+++ b/go/src/v.io/x/sensorlog/measured/measured.go
@@ -31,7 +31,7 @@
 	// Flags below are only applied the first time measured is run against a Syncbase service with the same devid.
 	flagAdmin     = flag.String("admin", "", "Blessing of admin user allowed to join the syncgroup. Must be specified.")
 	flagPublishSb = flag.String("publish-sb", "", "Syncbase service to publish the syncgroup at. Must be absolute. Must be specified. The syncgroup is published as '"+config.SyncgroupName("<publish-sb>", "<devid>")+"'.")
-	flagPublishMt = flag.String("publish-mt", "", "Additional mounttable to use for sync rendezvous in addition to namespace roots. Optional.")
+	flagPublishMt = flag.String("publish-mt", "", "Additional mount table to use for sync rendezvous in addition to namespace roots. Optional.")
 )
 
 func main() {
@@ -59,7 +59,7 @@
 		publishMts = append(publishMts, *flagPublishMt)
 	}
 
-	db, err := sbutil.CreateOrOpenDB(ctx, *flagSbService, sbmodel.MeasuredTables)
+	db, err := sbutil.CreateOrOpenDB(ctx, *flagSbService, sbmodel.MeasuredCollections)
 	if err != nil {
 		vlog.Errorf("Failed opening Syncbase db: %v", err)
 		return 1
@@ -79,7 +79,7 @@
 	})
 
 	writer := func(ctx *context.T, key *sbmodel.KDataPoint, val sbmodel.VDataPoint) error {
-		return db.Table(key.Table()).Put(ctx, key.Key(), val)
+		return db.Collection(key.Collection()).Put(ctx, key.Key(), val)
 	}
 
 	waitWatch := util.AsyncRun(func() error {
diff --git a/go/src/v.io/x/sensorlog/scripts/run_measured.sh b/go/src/v.io/x/sensorlog/scripts/run_measured.sh
index 30e5c6d..9340648 100755
--- a/go/src/v.io/x/sensorlog/scripts/run_measured.sh
+++ b/go/src/v.io/x/sensorlog/scripts/run_measured.sh
@@ -6,13 +6,13 @@
 # Starts an instance of measured and required services.
 #
 # mounttabled is started locally at IPADDR:PORT, mounting itself to the global
-# mounttable at $GLOBAL_MT/users/$USER/$PREFIX/$DEVID. syncbased is started in
-# the local mounttable at $PREFIX/$DEVID/syncbased.
+# mount table at $GLOBAL_MT/users/$USER/$PREFIX/$DEVID. syncbased is started in
+# the local mount table at $PREFIX/$DEVID/syncbased.
 # measured is started, creating a syncgroup published at the local syncbased as
-# reached through the global mounttable:
+# reached through the global mount table:
 # $GLOBAL_MT/users/$USER/$PREFIX/$DEVID/$PREFIX/$DEVID/syncbased
 # Once the syncgroup is joined, sync is configured to use either the global or
-# the local mounttable (unless the local mounttable IPADDR:PORT changes).
+# the local mount table (unless the local mount table IPADDR:PORT changes).
 # measured drops most permissions on prefixes in the syncgroup. Full admin
 # permissions are granted to $ADMIN (as a blessing extension of the same
 # default blessing as the one running this script).
diff --git a/go/src/v.io/x/sensorlog/scripts/runner_lib.sh b/go/src/v.io/x/sensorlog/scripts/runner_lib.sh
index 62af0c7..b5e77ce 100644
--- a/go/src/v.io/x/sensorlog/scripts/runner_lib.sh
+++ b/go/src/v.io/x/sensorlog/scripts/runner_lib.sh
@@ -49,7 +49,7 @@
 export -f get_user_email
 
 # Starts mounttabled at IPADDR:PORT. If $GLOBAL_MOUNT is provided, the
-# mounttable mounts itself under $GLOBAL_MOUNT/$NAME.
+# mount table mounts itself under $GLOBAL_MOUNT/$NAME.
 # run_mounttabled NAME IPADDR:PORT [GLOBAL_MOUNT]
 function run_mounttabled() {
   local -r NAME="$1"
@@ -58,7 +58,7 @@
   if [[ -n "${GLOBAL_MOUNT}" ]]; then
     GLOBAL_MOUNT="${GLOBAL_MOUNT}/${NAME}"
   fi
-  # TODO(ivanpi): Lock down mounttable permissions.
+  # TODO(ivanpi): Lock down mount table permissions.
   "${JIRI_ROOT}"/release/go/bin/vbecome -duration="${TIMEOUT}" \
     -name="$(name_to_blessing "${NAME}/mounttabled")" \
     "${JIRI_ROOT}"/release/go/bin/mounttabled -v23.tcp.address "${IPADDR_PORT}" \
@@ -95,7 +95,7 @@
 # Starts measured that uses $PUBLISH_SB to publish the syncgroup. Expects a
 # syncbase instance to have been started at $MT with the same $NAME. If
 # $PUBLISH_MT is provided, the syncgroup is advertised there in addition to
-# the local mounttable.
+# the local mount table.
 # run_measured MT NAME DEVID ADMIN PUBLISH_SB [PUBLISH_MT]
 function run_measured() {
   local -r MT="$1"
diff --git a/go/src/v.io/x/sensorlog/slcli/device.go b/go/src/v.io/x/sensorlog/slcli/device.go
index 373e43c..688bff4 100644
--- a/go/src/v.io/x/sensorlog/slcli/device.go
+++ b/go/src/v.io/x/sensorlog/slcli/device.go
@@ -58,7 +58,7 @@
 		desc = args[2]
 	}
 
-	db, err := sbutil.CreateOrOpenDB(ctx, *flagSbService, sbmodel.MasterTables)
+	db, err := sbutil.CreateOrOpenDB(ctx, *flagSbService, sbmodel.MasterCollections)
 	if err != nil {
 		return fmt.Errorf("failed opening Syncbase db: %v", err)
 	}
diff --git a/go/src/v.io/x/sensorlog/slcli/list.go b/go/src/v.io/x/sensorlog/slcli/list.go
index b62b448..f92d6be 100644
--- a/go/src/v.io/x/sensorlog/slcli/list.go
+++ b/go/src/v.io/x/sensorlog/slcli/list.go
@@ -58,7 +58,7 @@
 		return nil
 	}
 
-	db, err := sbutil.CreateOrOpenDB(ctx, *flagSbService, sbmodel.MasterTables)
+	db, err := sbutil.CreateOrOpenDB(ctx, *flagSbService, sbmodel.MasterCollections)
 	if err != nil {
 		return fmt.Errorf("failed opening Syncbase db: %v", err)
 	}
diff --git a/go/src/v.io/x/sensorlog/slcli/stream.go b/go/src/v.io/x/sensorlog/slcli/stream.go
index 1b7fb1f..b87673d 100644
--- a/go/src/v.io/x/sensorlog/slcli/stream.go
+++ b/go/src/v.io/x/sensorlog/slcli/stream.go
@@ -81,7 +81,7 @@
 		return err
 	}
 
-	db, err := sbutil.CreateOrOpenDB(ctx, *flagSbService, sbmodel.MasterTables)
+	db, err := sbutil.CreateOrOpenDB(ctx, *flagSbService, sbmodel.MasterCollections)
 	if err != nil {
 		return fmt.Errorf("failed opening Syncbase db: %v", err)
 	}